jni开发调用几个步骤:
- 编写java文件,文件中包含java原生方法,并使用System.loadLibrary("test")加载原生实现库。
- 执行javac生成class文件,执行javah生成原生方法对应的.h头文件。
- 导入.h头文件到C/C++开发工具,编写.c/.cpp文件具体方法实现。
- 在不同系统下编译.c/.cpp文件,生成(windows下:.dll,linux下:.so,Mac下:.dylib)动态库文件。
- java 命令执行class文件。
java文件中引入原生动态库:
System.loadLibrary("synchronizer");
在 java 中引用时,不能带上 lib和 .so
linux下jni 原生库:
生成文件:
生成的 .so,注意命名规则 libXXX.so,lib 和 .so 不能省略。
执行调用成功。
windows下jni远程库:
生成文件为:
执行失败!
debug:
Windows 去找动态库的时候,并没有lib前缀!
去掉dll文件的lib前缀
执行成功!
以上,不同操作系统有差别。