java调用c++dll,以及异常捕获处理
·
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位数是否匹配;
更多推荐
所有评论(0)