Java使用JNA方式调用DLL

0. 注意

Java使用JNA方式调用DLL时,需保证JDK位数与DLL位数相同,即,如果你本地JDK版本是64位的,那么必须编译64位版本DLL,才能使用JNA方式来调用

1. 引包

        <dependency>
            <groupId>net.java.dev.jnagroupId>
            <artifactId>jnaartifactId>
            <version>5.5.0version>
        dependency>

2. DLL接口

DLL声明接口格式如下

    function CreditTransABC(strIn, StrOut:pChar):Integer; stdcall;

Java声明对应接口如下。其中Java接口类中方法名必须与DLL中一致

public interface IHiBankLibrary extends Library {

    IHiBankLibrary INSTANCE = Native.loadLibrary("E:\\JavaDemo\\jna-demo\\data\\HiBankW64.dll", IHiBankLibrary.class);


    int CreditTransABC(String strIn, byte[] strOut);
}

3. 调用 DLL接口

public class HiBankJnaExecutor {

    public void creditTransABC() {
        byte[] strOut = new byte[1024];

        IHiBankLibrary.INSTANCE.CreditTransABC("1", strOut);
        String result = new String(strOut, StandardCharsets.UTF_8).trim();
        System.out.println(result);
    }
}

4. 测试

    @Test
    public void CreditTransABC() {
        new HiBankJnaExecutor().creditTransABC();
    }




GitHub:https://github.com/dkbnull/JavaDemo




你可能感兴趣的:(┏━,Java,#,┣━━━,Java,基础知识)