Java JNI在windows下调用原生方法的dll的坑

jni开发调用几个步骤:

  1. 编写java文件,文件中包含java原生方法,并使用System.loadLibrary("test")加载原生实现库。
  2. 执行javac生成class文件,执行javah生成原生方法对应的.h头文件。
  3. 导入.h头文件到C/C++开发工具,编写.c/.cpp文件具体方法实现。
  4. 在不同系统下编译.c/.cpp文件,生成(windows下:.dll,linux下:.so,Mac下:.dylib)动态库文件。
  5. java 命令执行class文件。

java文件中引入原生动态库:

System.loadLibrary("synchronizer");

 在 java 中引用时,不能带上 lib和 .so

linux下jni 原生库:

生成文件:

 生成的 .so,注意命名规则 libXXX.so,lib 和 .so 不能省略。

执行调用成功。

windows下jni远程库:

生成文件为:

执行失败!

debug:

Windows 去找动态库的时候,并没有lib前缀!

去掉dll文件的lib前缀 

执行成功!

 以上,不同操作系统有差别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值