因为要使用jni来调用c++程序,因此该类中的方法名录需要用native修饰且只有方法声明,没有实现
package testnative;
public class TestNative {
public native static String testNative(String str);
}
在elipse中点击【Run】–>【External Tools】–>【External Tools Configurations..】
测试会弹出一个窗口然后选择【Program】右击新建,如图:
这样我们就可以在eclipse中使用doc环境进行编译,如图,并输入红框中的命令,然后回车,这样就完成了Javah编译:
这样生成的dll文件是32位的,如需生成64位的,继续如下步骤:
4.1 JDK中两个h头文件:jni.h 和 jni_md.h两个文件的目录分别位于安装好的JDK目录下include与include/win32下
4.2 eclipse中点击【Window】–>【Show View】–>【Navigator】
4.3将这三个头文件拷贝到新建的C++项目下 and 添加到头文件夹中
4.3.1
4.3.2
打开使用javah编译好的头文件testnative_TestNative.h,将 #include
更改为 #include "jni.h"
并将该头文件中的方法复制到main.cpp中
8.1选择项目,点击右键>Build path>Configure Build path
8.2左侧选择Java Build Path>Libraries>JRE System Library>Native library location
8.3点击edit选择library路径,我这里选择的是工作空间的相对路径(即TestNative.dll文件所在目录),也可以直接输入绝对路径
package testnative;
public class TestNative {
static{
System.loadLibrary("TestNative");
}
public native static String testNative(String str);
}
控制台原样返回,到此结束。。。
本文只是整理测试,非完全原创,参考链接如下:
http://blog.csdn.net/liangzhao_jay/article/details/22854623
http://blog.openlg.net/index.php/archives/723
http://jingyan.baidu.com/article/380abd0a4640171d90192c9e.html
http://blog.csdn.net/ring0hx/article/details/3242245