编写java类, 类中有一个native方法。
public class Hello { public native void sayHello(); static { System.loadLibrary("HelloImpl");//加载生成的dll文件 } public static void main(String[] args) { new Hello().sayHello(); } }
生成.class文件
执行命令: javac Hello.java
生成.h文件
执行命令: javah Hello
.h文件的内容:
编写方法的实现 HelloImpl.c
下载安装mingw_64位, 并将其安装目录配置到系统环境变量
mingw_64位最新下载地址:mingw_64位最新版下载地址
该软件的作用是在windows系统使用gcc和g++命令,对c文件和c++文件进行编译,生成.o文件, 进而生成.dll文件。64位的只能生成64位的dll文件。若要生成32位的dll文件,请下载32位的mingw.
mingw_32最新版下载地址:mingw_32位最新版下载地址
安装完后将{minw安装目录}\mingw64\bin放到path即可。生成.o文件
执行命令: gcc -c -I"%JAVA_HOME%\include" - I"%JAVA_HOME%\include\win32" HelloImpl.c
执行完上述命令会生成HelloImpl.o文件。
生成dll文件
执行命令: gcc -Wl,--add-stdcall-alias -shared -o HelloImpl.dll HelloImpl.o
执行java命令, 验证是否成功。
执行命令: java Hello
或
执行命令: java -Djava.library.path=. Hello
如果没有dll动态链接库,输出结果是:
若存在动态连接库,输出结果是:
The End.