我试图在dll中调用一个函数,但是收到错误 我怎样才能确定它的来源?
protected native String parse(String base, String qualifiedType);
static {
try {
System.load("c:\\lib\\win32\\parser.dll"); //path is correct
}catch (Exception e){
e.getStackTrace();
}
}
public void parseFoo(){
String result = parse (name,baseType);
}
在调用parse
时我正在收到:
Exception in thread "main" java.lang.UnsatisfiedLinkError: MyClass.parse(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
答案 0 :(得分:0)
根本原因是方法签名。堆栈跟踪将显示在本机方法调用时抛出异常,而不是load()
,因此它与DLL路径名无关。
猜测,您在不调整C代码的情况下更改了Java本机方法签名。使用javah
重新生成.h文件并调整C代码以使其同意。并确保#include .c文件中的.h文件。