Peter Mu +

Java调用Dll-JNA(Java Native Access)

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]);
    }
}

3.Java与C/C++类型映射关系

4.送上相关文档一个

深入浅出 JNA—快速调用原生函数