将非托管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) 个答案