今天在用java调用dll文件的时候调用方法写错了,以至于一直出错。现在就记录一下。
Java中加载dll文件的方法有两种:
①、System.load(String filename);
从作为动态库的本地文件系统中以指定的文件名加载代码文件。文件名参数必须是完整的路径名(指的是绝对路径)。dll文件可以随便放到哪个目录下面,指定了绝对路径找到文件就OK了。filename指的就是加载的文件。
②、System.loadLibrary(String libname);
加载由 libname 参数指定的系统库。将库名映射到实际系统库的方法取决于系统,libname指的指定的动态库的库名。
用这个方法我是直接把dll文件放到System32下面的,自动去加载的。
<今天出现的错误是把两个方法用反了,因为也是在网上找的资料,一时没明白过来哪里错了。所以现在就记录一下,以免下次再犯>
Java文件编译成JNI文件
先吧java文件编译成class文件,再把class文件编译成*.h的文件
例如,Hello.java
javac Hello.java //编译java
(Hello的class路劲指定) javah -classpath.Hello //生成头文件,-classpath为所在的包路劲
Java中加载dll文件的方法有两种:
①、System.load(String filename);
从作为动态库的本地文件系统中以指定的文件名加载代码文件。文件名参数必须是完整的路径名(指的是绝对路径)。dll文件可以随便放到哪个目录下面,指定了绝对路径找到文件就OK了。filename指的就是加载的文件。
②、System.loadLibrary(String libname);
加载由 libname 参数指定的系统库。将库名映射到实际系统库的方法取决于系统,libname指的指定的动态库的库名。
用这个方法我是直接把dll文件放到System32下面的,自动去加载的。
<今天出现的错误是把两个方法用反了,因为也是在网上找的资料,一时没明白过来哪里错了。所以现在就记录一下,以免下次再犯>
Java文件编译成JNI文件
先吧java文件编译成class文件,再把class文件编译成*.h的文件
例如,Hello.java
javac Hello.java //编译java
(Hello的class路劲指定) javah -classpath.Hello //生成头文件,-classpath为所在的包路劲