我有一个 native /非托管 DLL,它有一个“CreateObject”函数,它返回一个指向业务对象的指针..所以调用将是某事。喜欢:
[DllImport("MyDll.dll", CharSet = CharSet.Auto)]
private static extern IntPtr CreateObject();
问题: 该对象公开了我想调用的公共(public)函数,如“Connect()”,但我不知道如何“映射”这些调用,所以我有一个简单的方法签名,如:
private bool Connect();
有什么想法吗?
最佳答案
实现此目的的方法是提供另一个 PInvoke 函数,该函数调用执行方法调用的 C 函数
[DllImport("MyDll.dll", CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.I1)]
private static extern bool Connect(IntPtr businessObject);
然后在 C 中定义以下内容
extern "C" {
bool Connect(Business* pObject) {
return pObject->Connect();
}
}
关于c# - P/从 C# : Call functions of returned object 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9788609/