有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

将非托管DLL从JAVA加载到C#

我有一个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中找不到名为“AsyncConception\u Connect”的入口点”

DLL是用C/C++编写的,我知道方法名在编译时可能会损坏。有谁能告诉我我是否遗漏了什么C#或者我只是加载了错误的DLL?谢谢

更新: 现在,我可以在检查dumpbin \exports asyncconn.dll后调用该方法,以使损坏的名称成为very_long_namespace_AsyncConnection_1Connect()。现在的问题是,Java使用什么机制来获取和构建方法名称


共 (0) 个答案