我有一个主要用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