我有一个主要用C#编写的项目。现在,由于外部库的某些限制,我需要合并一些在单独项目中定义的C ++代码。

是否可以在Visual Studio c ++ \ cli库中创建C ++类,以扩展在单独的DLL库中定义的C#类?

基本上,我需要使用继承在新的C ++类中共享一些在抽象C#类中定义的代码。

最佳答案

您可以在实现ref类子项的C ++项目中扩展C#类,该子类在/ clr编译源中定义,如下所示:


  公共ref类CPPRefClass:公共CSharpClass


当然,这意味着CPPRefClass仍然是.NET类,但是您可以使用委托在纯C ++类中使用它。

您甚至可以使用gcroot模板将其定义为C ++本机类的成员:

class NativeClass
{
private:
   gcroot<CPPRefClass^> m_CPPRefClass;

}


这是另一个示例:
https://msdn.microsoft.com/en-us/library/aeb4be4k

09-07 09:42