使用Java调用dll动态链接库

一:什么是dll?

DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。
写成dll文件大多是用C、VB、Delphi语言编写的,具体如何写就不考虑了,有现成的就行了。

二:Java语言该如何调用dll?

采用JNative技术为例:

首先将要调用的dll引入本地工程中:
1. 首先下载JNative.jar包,将jar包导入工程中;
2. 然后找到JNative.jar包中的JNativeCpp.dll(在windows环境中,Linux环境中用libJNativeCpp.so)
3. 接着将 JNativeCpp.dll 和 要引入的dll文件 放入C:\Windows\System32 目录下;以及 jdk的bin目录下(因为dll文件中会用到.dat,.lib文件);如果是web动态工程用到Tomcat,还需要放到Tomcat的bin目录下;
4. 还有一种方法是将他们直接放在本地工程中,加载本地文件;右击工程—Built Path—Source—Web App Libaries—Native library location:(none) — edit,选择本地放的dll文件夹就可以了。

引入完后,开始写Java代码:
在程序中加载dll文件有两种写法:
①:loadLibrary方法: 把dll文件拷贝到C:\Windows\System32目录 下, 引用时,只需要写dll文件名字即可。

System.loadLibrary("ZCDogChk"); // ZCDogChk 为dll文件名字

②: load方法: 写dll文件的完整路径

System.load("D:\\RegisterPlatform\\ZCDogChk.dll");

通过System.getProperty(“java.library.path”)查看路径位置

System.out.println(System.getProperty("java.library.path"));

// “ZCDogChk” 为dll文件名, “fChkDogRegNumZC” 为要调用的函数名

JNative jNative = new JNative("ZCDogChk", "fChkDogRegNumZC");
jNative.setRetVal(Type.STRING);  // 设置调用后的返回值类型
jNative.setParameter(0, str);  //参数下标是从0开始
jNative.getFunctionName();    //dll 函数名   
jNative.getDLLName();   //dll文件名
jNative.invoke();  //执行dll方法
jNative.getRetVal(); //获取返回结果
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值