我在尝试从Java调用C#中的函数时遇到了麻烦。我已经加载了包含该函数的dll。
错误讯息:
java.lang.UnsatisfiedLinkError: app.clsValidation.validate(Ljava/lang/String;)Ljava/lang/String;
C#代码编译成64位dll:
namespace library {
public class clsValidation {
public string validate(string txt) {
return txt;
}
}
}
Java代码
班级:
package app;
public class clsValidation {
static {
System.loadLibrary("library");
}
public native String validate(String txt);
}
我是如何在Java中调用的:
String txt = "something";
String result = new clsValidation().validate(txt);
答案 0 :(得分:3)
这是预料之中的。您的Java代码将C#DLL视为非托管库。它不是。它不会导出可以使用LoadLibrary
和GetProcAddress
导入的非托管函数。
如果您希望从.net DLL导出非托管函数,则可以:
其他选项包括通过COM公开功能,这很容易从Java中消费。