近日遇到了dll文件加载的问题,特别记录一下,防止以后忘记

加载dll文件,主要分为以下几个步骤:

1.查看dll文件信息

打开vs command 切换到当前目录

输入命令dumpbin -exports  dllname.dll查看文件信息

.主要查看函数信息

dumpbin /headers  dllname.dll 查看位数

java 加载dll服务死了 jna加载dll_加载

2.导入jar包

直接通过maven导入:

<dependency>
    <groupId>com.sun.jna</groupId>
    <artifactId>jna</artifactId>
    <version>3.0.9</version>
</dependency>

下载JNA包导入:

github下载链接:https://github.com/java-native-access/jna

3.将dll文件放在resource下(idea)(如果加载不出来,可以直接放到jdk bin下,或者直接使用绝对路径)

4.加载dll文件

   

public class JNADllCall {



    public interface CLibrary extends Library {
        // DLL文件默认路径为项目根目录,若DLL文件存放在项目外,请使用绝对路径。(此处:(Platform.isWindows()?"msvcrt":"c")指本地动态库msvcrt.dll)
        CLibrary INSTANCE = (CLibrary) Native.loadLibrary((Platform.isWindows() ? "msvcrt" : "c"),
                CLibrary.class);

        // 声明将要调用的DLL中的方法,可以是多个方法(此处示例调用本地动态库msvcrt.dll中的printf()方法)
        void printf(String format, Object... args);
    }

    public static void main(String[] args) {
        CLibrary.INSTANCE.printf("Hello, World!");
    }
}

注意:dll文件的位数一定要与项目jdk位数相同,如果不同,可以切换jdk版本