eclipse 下实现java JNI 初探

/*by sam哥*/
JNI一般用在调用c或者c++的链接库,由于JNI调用时一般需保证名称一致,所以一般做法是先写java函数名再去写c/c++(你nb了就不用这么干了)
我做了个入门级的教程,适合对c/c++懂得不多的童鞋
这个例子里去调用本地的numplus接口实现两整数相加
首先是java的函数申明
//NativeMethod.java,主要用来放jni接口

//以下都用的default package

public 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++申明了。
[b][color=red]注意使用该命令时到class文件根目录下执行,即如果类在/bin/test/jni/MyJni.class,则需要到bin目录下执行javah -jni test.jni.MyJni[/color][/b]
为了制作dll,我用的code blocks,比较轻量级不像vc不太好卸载
打开code blocks,新建工程选新建动态库工程
[img]http://dl.iteye.com/upload/attachment/462322/ac54a2ab-0f3b-316c-8185-75b1050f96c3.jpg[/img]
建好后将系统生成的main.cpp和main.h删掉不要(你要也行),将上面javah生成的NativeMethod.h拷贝进来,然后新建NativeMethod.cpp,然后将jdk安装目录下C:\Program Files\Java\jdk1.6.0_05\include的所有.h文件拷贝到工程里,你也可以引用到工程里,但我对codeblocks不熟所以用的比较笨的办法。如图:

[img]http://dl.iteye.com/upload/attachment/462328/fe354e67-88d0-36f4-b55b-0e4a39f5fc0a.jpg[/img]

然后在NativeMethod.cpp实现该方法,点击左上角的编译,成功后会在workspace里的debug目录下生成dll;
最后将这个dll拷贝到eclipse工程根目录下运行。OK。
我在弄得时候出现了java.lang.UnsatisfiedLinkError,没搞清楚原因,但是找到了解决办法:
这是别的大牛的解决问题的方法:
http://dikar.iteye.com/blog/382701
我用的是在方法名前面加下划线,别说,还真就行了。
好了,eclipse工程和codeblocks工程都发上来,大家一起入门吧。
/*by sam哥*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值