我正在尝试在java中使用C#dll函数。我收到了无法找到函数的错误,但是,找到并成功加载了dll。
当我在寻找一个问题时,我发现有时编译器会将符号和整个函数名称变成类似于' myFunction @ 32'而不是' myFunction'。不幸的是,这不是我的问题。
public interface IConectorT extends Library {
boolean DeleteCustomObjectRecord(String company, String username, String password, int cdoId,
String cdoName, int[] cdoRecordIds);
IConectorT INSTANCE = (IConectorT) Native.loadLibrary("C:\\Windows\\System32\\Eloqua API",
IConectorT.class, new HashMap() {
{
put("DeleteCustomObjectRecord","_DeleteCustomObjectRecord@32");
}
});
}
我试过@ 64,@ 32,@ 16等。还尝试添加" _"作为前缀。 我也尝试过使用" .dll"没有,相对路径相同。 (但加载不是问题)
我尝试了一点更新,现在它返回了这个错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError:
Main.Main.DeleteCustomObjectRecord(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava
/lang/String;[I)Z
at Main.Main.DeleteCustomObjectRecord(Native Method)
at Main.Main.main(Main.java:15)