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

时间:2012-09-28 13:11:10

标签: c# java dllimport

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

0 个答案:

没有答案