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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值