jna调用dll方式实例与错误解决

 1.实例

package com.dll;
/**
 * @Description: 需要引入的jna依赖
 * <dependency>
 * <groupId>net.java.dev.jna</groupId>
 * <artifactId>jna</artifactId>
 * <version>3.4.0</version>
 *</dependency>
 */

import com.sun.jna.Library;
import com.sun.jna.Native;
/**
 * @ClassName DllTest
 * @Date 2021/11/29 14:42
 * @Author shich
 * @Description TestDll.dll调用实例分享
 */
public class DllTest {
    public interface Dll extends Library{
        Dll INSTANCE = (Dll) Native.loadLibrary("D:\\project\\DLL\\src\\main\\resources\\TestDll",Dll.class);
        /**
         * @return
         */
        int add(int a, int b);
    }


    public static void main(String[] args) {
        long i = Dll.INSTANCE.add(2,2);
        System.out.println(i);
    }
}

 2.dll报异常

 3.常见异常

a.java.lang.UnsatisfiedLinkError: Unable to load library
注意检查dll文件路径访问是否存在问题,没有找到动态库文件。
b.java.lang.UnsatisfiedLinkError: 找不到指定的模块。
注意检查库文件的依赖项是否加载全,通常依赖库跟库文件放在一起会自动加载。

4.如何查找自己依赖缺失

a.下载一个Dependency Walker 

b.用软件打开指定路径下的dll

c.红色框标记的黄色问号就是当前我缺失的4个需要的依赖,Dependency Walker 具体使用可以百度学习

d. cn.dll-files.com 去这个网址下载缺失的dll放在你需要调用的dll路径下或者C:\Windows\System32路径下,当前我是64位,32位系统放哪里可以百度了解

5.解决成功返回结果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JNAJava Native Access 的缩写,是 Java 的一个开源库,可以方便地访问本地的 C/C++ 库。如果你想要使用 JNA 调用 dll 库,你需要按照以下步骤进行操作: 1. 定义接口 首先你需要定义一个接口,用来描述你要调用dll 的函数。接口的定义需要继承自 com.sun.jna.Library 接口,这个接口定义了 JNA 库的核心功能,你需要在接口中定义调用的函数,如下所示: ```java import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.Platform; public interface MyDll extends Library { MyDll INSTANCE = (MyDll) Native.loadLibrary((Platform.isWindows() ? "mydll.dll" : "mydll"), MyDll.class); void myFunction(); } ``` 2. 加载库 在上面的代码中,我们使用 Native.loadLibrary() 方法加载了一个名为 mydll.dll 的库,这个方法的第一个参数是库的名称,第二个参数是接口的类型。在这个例子中,我们通过 INSTANCE 变量获取了一个 MyDll 接口的实例。 3. 调用函数 在我们定义的接口中,我们已经定义了一个名为 myFunction() 的函数,我们可以直接调用这个函数来执行我们想要的操作,例如: ```java MyDll.INSTANCE.myFunction(); ``` 注意,这里的 INSTANCE 是我们在定义接口时创建的一个静态变量,它是一个 MyDll 接口的实例,我们可以通过它来调用我们定义的函数。 以上就是使用 JNA 调用 dll 的基本步骤,当然在实际使用中还需要根据具体的情况进行一些参数的设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值