Dav*_*vid 2 .net c# pinvoke unmanaged c++-cli
我有一个本机/非托管DLL,它有一个"CreateObject"函数,它返回一个指向业务对象的指针..所以调用将是...... 喜欢:
[DllImport("MyDll.dll", CharSet = CharSet.Auto)]
private static extern IntPtr CreateObject();
Run Code Online (Sandbox Code Playgroud)
问题:对象是暴露我想要调用的"Connect()"之类的公共函数,但我不知道如何"映射"这些调用,所以我有一个简单的方法签名,如:
private bool Connect();
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
这样做的方法是提供另一个PInvoke函数,该函数调用进行方法调用的C函数
[DllImport("MyDll.dll", CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.I1)]
private static extern bool Connect(IntPtr businessObject);
Run Code Online (Sandbox Code Playgroud)
然后在C中定义以下内容
extern "C" {
bool Connect(Business* pObject) {
return pObject->Connect();
}
}
Run Code Online (Sandbox Code Playgroud)