1. java代码里添加jna依赖,修改pom.xml文件
net.java.dev.jna jna 5.7.02.创建一个接口,该接口继承Library
3. 创建一个实现类(先不运行)
4. 打开VS创建C++应用程序,新建一个cpp文件,修改其头文件
5. cpp文件引入头文件并实现方法
6. 生成dll文件
右键项目,点击属性,保证输出配置为dll。最后右键解决方案,点击生成解决方案
7. 运行java程序进行测试
二.Java通过JNI调用C++动态库1. java创建一个测试类
2. cmd进入对应的文件夹路径并进行编译,编译时要把中文注释删了
输入 javac JNITest.java 生成一个.class字节码文件
再输入 javac -h ./ JNITest.java 生成一个.h头文件
3. 打开VS创建C++应用程序,新建一个cpp文件,将上一步生成的.h头文件复制到项目目录下,并手动添加
4.以同样的方式添加jni.h和jni_md.h(在jdk中查找和复制)
5. 如果引用jni.h时还有报错,则修改符号
6. 编写cpp文件,引入头文件实现对应方法
7. 生成dll文件
右键项目,点击属性,保证输出配置为dll。最后右键解决方案,点击生成解决方案
8. 将生成的动态库放到项目根目录里(或者是jdk的bin目录下),运行测试
三. JNI和JNA区别JNI允许Java代码和其他语言(尤其C/C++)写的代码进行交互,只要遵守调用约定即可。首先看下JNI调用C/C++的过程,注意写程序时自下而上,调用时自上而下。步骤非常的多,很麻烦。
JNA框架解决了既需要编写java代码,又要编写C语言的代理方法及很多数据类型的转换的问题,它提供一组Java工具类用于在运行期动态访问系统本地共享类库而不需要编写任何Native/JNI代码。开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射,大大降低了Java调用本体共享库的开发难度。
JNA调用C/C++的过程大致如下:
JNA 调用比 JNI 调用更方便!
JNA是建立在JNI技术基础之上的一个Java类库,它使您可以方便地使用java直接访问动态