前段时间一直学习c语言,就是为了能够做JNI开发。
JNI(java Native interface),即java本地接口,是为了java编写本地方法和jvm嵌入本地应用程序的标准应用程序接口。首要的目标是在给定的平台上采用JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在windows平台上是DLL文件形式,在UNIX机器上是SO文件形式)。通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的各个接口方法。有的jvm来实现兼容的二进制编码本地方法库。
JNI开发环境:Windows2010 + Elipse + Visual Studio2013.
开发流程:
1、在eclipse新建一个java项目:
2、Test类编写本地(native)方法
3、通过命令提示符
生成.h
头文件:
1)在eclipse项目下的src 右键选择Propertise,找到项目的src路径,并且复制
2)使用cmd 打开命令提示符
,进入项目的src目录。
3)使用javah 生成.h
头文件,注意的是使用javah命令需要为java,配置系统环境变量
然后才能使用javah生成头文件
注意:这里命令javah 类
需要的是类的完整类名(报名+类名)。否则找不到类.
回到eclipse项目,刷新就可以看到刚刚生成的.h
头文件。
4、在Visual Studio新建一个C的空项目,在源文件添加.C
文件。
5、将刚刚生成的.h
头文件 和 java安装目录下的jni.h
、jni_md.h
文件复制到项目的目录下。
复制到项目目录下
6、在Visual Studio平台项目的头文件中添加现有项,将刚刚复制的头文件添加进来。
7、将jni.h
文件中报错的#include <jni_md.h>
改为#include "jni_md.h"
。
8、在Mytest.c
实现com_lwj_test_Test.h
函数.
9、配置dll文件解决方案。项目右键,选择属性
配置属性----->常规------>配置管理器
平台------>新建x64
配置dll动态库:
10、生成---------->生成解决方案,得到dll文件
看到控制台中已经有文件输出的信息了,我们得到了DLL文件了。
11、把dll文件复制到eclipse项目的目录下
12、加载动态库,调用函数。
运行得到结果
上面就是JNI开发的整个基本流程。最终我们通过加载动态库,调用JNI得到结果。