一、什么是dll文件
DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。
二、Java调用dll文件方法
1.Jna调用动态库
JNA(Java Native Access )提供一组Java工具类用于在运行期动态访问系统本地库(native library:如Window的dll)而不需要编写任何Native/JNI代码。开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到nativefunction的映射。
使用步骤:
(1):调入jar包,使用Jna之前我们需要在项目中首先导入Jna的jar包,有两个,jna-3.3.0-platform.jar和 jna.jar.下载:点击打开链接
(2):将需要调用的第三方dll文件放在项目的根目录下
package com.test.dll;
import com.sun.jna.Library;import com.sun.jna.Native;
/**
* dll文件名称 dll.dll
* dll文件方法名function,参数类型String,返回类型String
* @author july
*
*/
public class JNATest{
public interface JNATestDll extends Library{
//dll文件放在C:\Windows\System32下
JNATestDll instanceDll = (JNATestDll)Native.loadLibrary("dll.dll",JNATestDll.class);
public String function(String param);
}
public static void main(String[] args) {
String param="aa";
String returnvalue = JNATestDll.instanceDll.function(param);
System.out.println("returnvalue = "+returnvalue);
}
}
(3):将需要调用的dll动态链接库放置到system32文件里,否则就会出现找不到dll文件的错误。
package com.jsld.client;
import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;
public class test {
public static void main(String[] args) {
try {
//调用dll,获取结果
JNative.setLoggingEnabled(true);
System.load("D:\\dll.dll"); //dll文件加载路径
JNative getFunction = new JNative("dll.dll", "function");//dll名称,调用方法
getFunction.setRetVal(Type.STRING); //设置返回值类型为:
StringgetFunction.setParameter(0,"aa"); //按顺序设置方法需要的参数值
getFunction.invoke(); //调用方法
String retval=getFunction.getRetVal(); //dll返回值
System.out.println("調用结果==\n"+retval);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NativeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}