查找错误:''找不到指定的过程

时间:2014-09-01 08:51:36

标签: java c# jna

我正在尝试在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)

1 个答案:

答案 0 :(得分:1)

据我所知,JNA仅适用于 native 库。在从Java访问它之前,您需要为C#库编写一个C / C ++包装器。

Check this answer