1、调用
主要通过jna调用,定义接口类,继承Library

 public interface Cllapi extends Library {
        //加载dll,第一个参数可以写dll的绝对路径
        Cllapi cllapi = (Cllapi) Native.load("dll名称", Cllapi.class);
        //dll中方法
        int add(int a, int b);
    }
    pulbic class Loadlib implements Cllapi {
        @Override
        public int add(int a, int b) {
            return Cllapi.cllapi.add( int a, int b);
        }
        public static void main() {
            try {
                Loadlib loadlib = new Loadlib();
                int ret = loadlib.add(1, 2);
                System.out.println("获取到的调用结果**" + ret)
            } catch (Throwable e)
            System.out.println("调用异常**" + e.toString())
        }
    }

2、异常处理
如果dll找不到,或路径找不到相应的dll,就会报java.lang.UnsatisfiedLinkError: Unable to load library:找不到指定的模块。
此时用Exception,异常捕获不到,用Throwable可以捕获到,查阅资料,Throwable为Exception的父类,可以捕获到加载时异常。
主要检查:
(1)dll是否存在;
(2)dll路径,名称是否正确;
(3)dll编译位数(32位,或64)与jdk位数是否匹配;

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐