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