无法在C#代码中直接使用C ++类。您可以间接使用PInvoke来访问您的类型。
基本模式是为Foo类中的每个成员函数创建一个关联的非成员函数,该非成员函数调用该成员函数。
class Foo {public: int Bar();};extern "C" Foo* Foo_Create() { return new Foo(); }extern "C" int Foo_Bar(Foo* pFoo) { return pFoo->Bar(); }extern "C" void Foo_Delete(Foo* pFoo) { delete pFoo; }现在只需将这些方法调用到您的C#代码中即可
[Dllimport("Foo.dll")]public static extern IntPtr Foo_Create();[Dllimport("Foo.dll")]public static extern int Foo_Bar(IntPtr value);[Dllimport("Foo.dll")]public static extern void Foo_Delete(IntPtr value);缺点是您要传递一个笨拙的IntPtr,但是围绕此指针创建C#包装器类以创建更可用的模型是一件简单的事情。
即使您不拥有此代码,也可以创建另一个DLL,该DLL包装原始DLL并提供一个小的PInvoke层。



