Java使用JNA方式調用DLL

0. 注意

Java使用JNA方式調用DLL時,需保證JDK位數與DLL位數相同,即,如果你本地JDK版本是64位的,那麼必須編譯64位版本DLL,才能使用JNA方式來調用

1. 引包

        <dependency>
            <groupId>net.java.dev.jna</groupId>
            <artifactId>jna</artifactId>
            <version>5.5.0</version>
        </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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章