亲测可用,java成功调用dll文件,springboot版本

本文详细介绍了如何在SpringBoot项目中使用JNA成功调用DLL文件,强调了DLL文件和JDK位数的匹配重要性,并提供了一步步的调用步骤,包括在pom.xml增加JNA依赖、编写调用接口、测试调用等。同时,作者提供了32位DLL文件和对应32位JDK环境的实例,并分享了项目源码和DLL文件的下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近由于公司业务需要,要调用dll文件

本文采用JNA调用。

注意!!!FBI警告!!如果你的dll文件是64位的话,就要用64位的jdk!如果你的dll文件是32位的话,就要用32位的jdk!

注意!!!FBI警告!!如果你的dll文件是64位的话,就要用64位的jdk!如果你的dll文件是32位的话,就要用32位的jdk!

注意!!!FBI警告!!如果你的dll文件是64位的话,就要用64位的jdk!如果你的dll文件是32位的话,就要用32位的jdk!

本文提供的dll测试文件是32位的,所以对应的jdk版本是32位的!

环境:win10 ,32位jdk1.8 ,java8版本

 

dll文件对应函数
int add(int a,int b);
int dec(int a,int b);
int Handle(int (*Callback)());  //里面参数,需要我们传回调函数

java调用步骤

1.pom.xml文件增加jna依赖

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

2.编写调用接口

package com.dll.demo.demo.dllService;

import com.sun.jna.Library;
import com.sun.jna.win32.StdCallLibrary.StdCallCallback;

public class DllService {
    public interface JNATestDll extends Library {
        //对应dll的函数名,名字要一样
        public int add(int a,int b);
        public int dec(int a,int b);
        //对应的回调函数
        public void Handle(Cback c);

        //dll的回调函数java只能用回调接口
        public interface Cback extends StdCallCallback {
            public void hello();
        }
        //下面实现接口
        public  class  CbackIpm implements Cback{
            //这个是我们要传入的函数
            @Override
            public void hello() {
                System.out.println("我是回调函数,执行成功");
            }
        }
    }
}

3.测试调用

    @Test
    void testDll() {
        DllService.JNATestDll instanceDll  = (DllService.JNATestDll) Native.loadLibrary("D:\\TestDll.dll", DllService.JNATestDll.class);
        //调用dll普通函数
        int sum =instanceDll.add(10,60);
        int sum2 =instanceDll.dec(10,20);

        //调用dll回调函数
        DllService.JNATestDll.Cback cc =new DllService.JNATestDll.CbackIpm();
        instanceDll.Handle(cc);

        System.out.println("add调用结果:"+sum);
        System.out.println("dec调用结果:"+sum2);
    }

4.附上调用结果

 

注意!!!

dll文件的路径一定要写对!!你放哪里就写哪里!!!

 

 

项目demo源码和测试dll文件下载地址,https://download.youkuaiyun.com/download/sinat_19594515/12668966

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值