Java调用Dll-JNA(Java Native Access)
2014-05-13
Java本身提供调用Dll的方法及时JNI,这货实在是难用,还需要用C语言再封装一下。幸好有JNA,用JNA调用Dll异常方便。
1.准备工作
下载 jna.jar
对的,你没看错,仅仅一个jar包。下载后在项目中引入jna.jar
另,JNA的GitHub地址: https://github.com/twall/jna
2.入门实例
package com.sun.jna.examples;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
/** Simple example of JNA interface mapping and usage. */
public class HelloWorld {
//用一个继承自jna.Library的接口描述要调用的Dll
public interface CLibrary extends Library {
//加载Dll
CLibrary INSTANCE = (CLibrary)
Native.loadLibrary((Platform.isWindows() ? "msvcrt" : "c"), CLibrary.class);
//声明Dll中的函数,如果Dll中有个printf的函数,在此声明一个同名的
//且参数类型一致的方法,java与c的类型映射见第三节
void printf(String format, Object... args);
}
public static void main(String[] args) {
//调用Dll中的方法
CLibrary.INSTANCE.printf("Hello, World\n");
for (int i=0;i < args.length;i++) {
CLibrary.INSTANCE.printf("Argument %d: %s\n", i, args[i]);
}
}