好吧。。吐槽下,话说最近鸭梨好大。。莫非是事情越来越多。。。望天。。。 1、JNI(java native interface:java本地调用) 书写步骤:编写带有native声明的方法的java类==>使用javac命令编译所编写的java类==>使用javah-jni java类名生成扩展名为h的头文件==>使用C/C++实现本地方法==>·将C/C++编写的文件生成动态连接库==>运行、测试 2、使用eclipse开发JNI(囧。。不知道这个定义是不是错的。。。管他的) (1)编写native声明的JAVA类
(2)使用javac命令编译所编写的java类 我将JNITest.java复制到了D盘下,并在D盘新建了个文件夹classes,以便将编译好的class文件放入classes文件夹中 然后cmd,进入D盘目录,运行javac JNITest.java(注:有空格),然后回车 在classes这个文件夹中就可以看到编译好的JNITest.class了
(3)Javah生成JNI头文件.h(这个h文件相当于我们在java里面的接口,然后在我们的本地方法里面实现这个方法,也就是说我们在写C/C++程序的时候所使用的方法名必须和这里的一致) 进入D盘的classes文件夹这个目录==>执行javah -classpath bin -d jni com.woody.jni.JNITest ==>这时你可以看到在classes中有了一个com_woody_jni_JNITest.h头文件(com.woody.jni.JNITest是我自己的目录下的类名)
(4)编写本地方法实现方法 这步没啥说的,就是写C文件(注:C文件的include后面最好用"",不用<>,这样才能找到)
(5)生成动态库(dll,<windows>下) A、生成前准备: 【1】、安装visual c++ 【2】、cmd运行cl命令,可能会提示mspdb60.dll找不到,需要自己去下载,下载地址:http://ishare.iask.sina.com.cn/f/6350318.html?from=like 【3】、下载好后将mspdb60.dll复制到C:\Program Files\Microsoft Visual Studio\VC98\Bin目录下,并将bin目录配置到环境变量中,此时再看看cl命令可以运行否
B、cmd下进入C文件所在的目录,执行:cl -IC:\Program?Files\Microsoft?Visual?Studio\VC98\Lib -LD HelloWorldImpl.c -Fehello.dll (注意:-Fehello.dll,前面的-Fe是一个配置选项,后面的hello是我们之前在头文件写的动态库名称,上面的?是需要代替空格的) 这时你可能会遇到几个问题: 【1】jni.h:no include path set 首先在环境变量--系统变量(注意一定是下面的系统变量中)设置 名:INCLUDE 地址:C:\Program Files\Microsoft Visual Studio\VC98\Include 名:LIB 地址:C:\Program Files\Microsoft Visual Studio\VC98\Lib 【2】经过第一步,又可能会出现这个错误,cannot open include file:'jni.h': such file or directory解决方法很简单:只需要将JDK下的include目录中的jni.hj和jni_md.h复制到C:\Program Files\Microsoft Visual Studio\VC98\Include即可
(6)运行测试 进入dll目录中,执行JAVA XXX即可(注意要附带包名类名)
Cannot open
include file: '
jni.
h':
No such file or directory
|
四极管:JNI学习(一:书写步骤及简单在eclipse下实现JNI)
2011-03-14 16:12