JNI java调用动态链接库dll

    现在做的项目中就用到了JNI调用c语言实现的访问设备的dll文件,在此之前对JNI是一窍不通哈,只听说过JNA链接dll,但只是一个了解。

    JNI(Java Native Interface)Java本地接口,主要作用是实现java代码与C C++编写的代码交互。

    

    理论不多说,还是看java链接dll具体操作吧。。如下:

    以下实例为java中调用connection.dll文件中的 open()方法。


1,java方

    1)装载dll文件

         有两种方式System.load();和System.loadLibrary();

         load需要全路径且需要有文件扩展名;

         loadLibrary是特定路径,系统system32下或项目bin目录下,只要文件名称不要.dll扩展名。


     2)本地声明方法

         装载完成dll文件后,将使用的方法用native关键字声明。

<span style="font-size:18px;">
public class ConDll{
     static{
	System.load("d://connection.dll");
	//或System.loadLibrary("connection");
     }
     
     public native static void open();
}</span>

     3)生成.h头文件

          使用javah ConDll 命令生成.h头文件(先使用javac 生成.class文件)。


#include<stdio.h>
#include<ConDll.h>
JNIEXPORT void JNICALL JAVA_ConDll_open(JNIEnv *env,jobject obj);

         生成的头文件中方法命名为java类的完整路径和方法,中间用下划线隔开。

         注意:如果项目中调用现成的dll文件,我们必须知道C中方法的声明,并在java程序中创建对应的包结构,如果路径不对应,运行java程序时就会报错,亲身教训呀。(我做的项目调整了一下包名,dll文件没有重新编译)。


2,C方

       根据生成的.h头文件,实现所有的方法。


       一般项目中dll文件都是先有的,在java中调用时一定要确保java类的包路径和类名,要与dll对应的方法全名路径一致。


  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值