1

我有一个 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 使用什么机制来构建方法名称?

4

0 回答 0