最近看《深入Java虚拟机》看到Java本地接口,而且之前接触到一个应该使用JNI的程序,那是一个利用GPRS Modem发送手机短信的程序,由于发送短信要对串口编程,明显不是Java的强项,所以用用C++做了发送短信的程序,本来利用JNI就可以实现Java调用C++,但是实现者却利用Socket通信来实现......今天再次看到JNI,想亲手试试看。
开发步骤:
1. 编写Java程序
2. 编译该Java程序
3. javah生成.h头文件
4. 生成动态链接库文件
5. 运行Java程序测试
1. 编写Java程序
编写MyNative.java 并保存,比如在C盘下
2. 编译该Java程序
C:/>javac MyNative.java
3. javah生成.h头文件
C:/>javah MyNative
生成MNative.h 文件,内容如下:
4. 生成动态链接库文件
打开Microsoft Visual Studio 2008
New -> Project,并选Win32 Project,如下图
在弹出窗口中点击Next,出现如下窗口,选择Dll,点击Finish
打开MyNative.cpp,编辑代码如下
添加MyNative.h文件到工程的头文件目录如下图(我是将该文件拷贝到此路径下后再添加)
将%JAVA_HOME%/include下的所有头文件,.h文件都拷贝到Microsoft Visual Studio 2008 的include路径下
之后点击Build->Build Solution,状态栏显示Build succeeded构建成功。在工程的Debug目录下生成了MyNative.dll文件
5. 运行Java程序测试
将MyNative.dll文件拷贝到MyNative.java同一路径下,执行后得到结果
总结