eclipse 上实现java JNI 初探
eclipse 下实现java JNI 初探/*by sam哥*/JNI一般用在调用c或者c++的链接库,由于JNI调用时一般需保证名称
eclipse 下实现java JNI 初探
/*by sam哥*/
JNI一般用在调用c或者c++的链接库,由于JNI调用时一般需保证名称一致,所以一般做法是先写java函数名再去写c/c++(你nb了就不用这么干了)
我做了个入门级的教程,适合对c/c++懂得不多的童鞋
这个例子里去调用本地的numplus接口实现两整数相加
首先是java的函数申明
//NativeMethod.java,主要用来放jni接口
//以下都用的default packagepublic class NativeMethod {public static native int numplus(int a,int b);}
//Main.java,用来调用测试jni接口
public class Main {/** * @param args */public static void main(String[] args) {System.out.println(NativeMethod.numplus(1, 2));}static{System.loadLibrary("jnidll");}}
搞完后在eclipse里面会生成NativeMethod.class文件,cmd窗口过去,输入javah -jni NativeMethod生成NativeMethod.h文件,这个就是jni的c++申明了。
注意使用该命令时到class文件根目录下执行,即如果类在/bin/test/jni/MyJni.class,则需要到bin目录下执行javah -jni test.jni.MyJni为了制作dll,我用的code blocks,比较轻量级不像vc不太好卸载
打开code blocks,新建工程选新建动态库工程
建好后将系统生成的main.cpp和main.h删掉不要(你要也行),将上面javah生成的NativeMethod.h拷贝进来,然后新建NativeMethod.cpp,然后将jdk安装目录下C:\Program Files\Java\jdk1.6.0_05\include的所有.h文件拷贝到工程里,你也可以引用到工程里,但我对codeblocks不熟所以用的比较笨的办法。如图:
然后在NativeMethod.cpp实现该方法,点击左上角的编译,成功后会在workspace里的debug目录下生成dll;
最后将这个dll拷贝到eclipse工程根目录下运行。OK。
我在弄得时候出现了java.lang.UnsatisfiedLinkError,没搞清楚原因,但是找到了解决办法:
这是别的大牛的解决问题的方法:
http://dikar.iteye.com/blog/382701
我用的是在方法名前面加下划线,别说,还真就行了。
好了,eclipse工程和codeblocks工程都发上来,大家一起入门吧。
/*by sam哥*/