我有一个 Java 应用程序,它具有以下过程(精简到最低限度):
public void connect()
{
System.loadLibrary("asyncconn");
pfcAsyncConnection.AsyncConnection_Connect(null, null, null, timeout);
}
在另一个班级
package very.long.namespace.pfcAsyncConnection;
public class pfcAsyncConnection
{
public static native AsyncConnection AsyncConnection_Connect(String paramString1, String paramString2, String paramString3, Integer paramInteger)
throws jxthrowable;
}
我想将 Java 代码转换为 C# 并这样做:
public void connect()
{
pfcAsyncConnection.AsyncConnection_Connect(null, null, null, timeout);
}
public static class pfcAsyncConnection
{
[DllImport("asyncconn.dll")]
public static extern AsyncConnection AsyncConnection_Connect(String s1, String s2, String s3, Int32 i4);
}
它给出了错误“无法在 DLL asyncconn.dll 中找到名为 'AsyncConncetion_Connect' 的入口点”
DLL 是用 C/C++ 编写的,我知道编译时方法名称可能会被破坏。谁能告诉我我是否遗漏了任何 C# 或者我只是真的加载了错误的 DLL?谢谢。
更新:
现在我可以在检查后调用该方法dumpbin \exports asyncconn.dll
以获取损坏的名称very_long_namespace_AsyncConnection_1Connect()
现在问题是,Java 使用什么机制来构建方法名称?