C# 调用c+的类成员+;来自c的DLL# 我已经知道如何调用C++中的C++函数,当所提供的函数不是类成员时。但是在下面的代码示例中,我如何调用像foo这样的类成员呢 class _declspec(dllexport) MyClass{ public: void foo(); };

C# 调用c+的类成员+;来自c的DLL# 我已经知道如何调用C++中的C++函数,当所提供的函数不是类成员时。但是在下面的代码示例中,我如何调用像foo这样的类成员呢 class _declspec(dllexport) MyClass{ public: void foo(); };,c#,c++,dll,marshalling,C#,C++,Dll,Marshalling,这样做是行不通的,因为c编译器不知道调用哪个类 [DllImport("MyDLL", CallingConvention = CallingConvention.Cdecl)] private static extern void foo(); < >从C++语言(和大多数其他语言)直接调用C++对象的方法的唯一方法是从它中创建一个完整的COM对象。 使用间接级别的一种更简单的方法:开发一个反映对象操作的纯静态方法的API。然后你可以很容易地从.NET调用它 C++: C#: MyC

这样做是行不通的,因为c编译器不知道调用哪个类

[DllImport("MyDLL", CallingConvention = CallingConvention.Cdecl)]
    private static extern void foo();

< >从C++语言(和大多数其他语言)直接调用C++对象的方法的唯一方法是从它中创建一个完整的COM对象。 使用间接级别的一种更简单的方法:开发一个反映对象操作的纯静态方法的API。然后你可以很容易地从.NET调用它

C++:

C#:

MyClass* WINAPI CreateMyClass() { return new MyClass(); }
void WINAPI CallFoo(MyClass* o) { o->foo(); }
[DllImport("MyDLL")]
private static IntPtr CreateMyClass();

[DllImport("MyDLL")]
private static void CallFoo(IntPtr o);