同一个.NET应用程序中的C#和C ++代码?

时间:2013-09-01 22:57:50

标签: c# c++ .net

我应该使用Open CV,它可以用C ++编程并在.NET图形界面应用程序中部署。我真的很喜欢用C#来处理接口特性。

最好的方法是什么?

1 个答案:

答案 0 :(得分:3)

我知道有两种方法可以在同一个应用程序中使用C#和C ++。

最简单的方法适用于用C ++和C#编写的组件可以分开使得一个组件依赖于另一个组件,但它们不是相互依赖的。在这种情况下,只需创建两个程序集,一个在C#中,一个在VC ++中,另一个在另一个中引用。这是最简单的方法,尤其是因为Visual Studio的UI支持它。

但是,如果存在相互依赖关系,那么这种方法将不起作用,即A类需要知道B类,而B类需要知道A类,其中A类用C ++编写,B类是用C#编写。使用.NET的一个鲜为人知的特性称为多文件程序集或netmodules,仍然可以用不同的语言编写类。

有关说明,请参阅How to: Build a Multifile AssemblyMultifile Assemblies。记住C ++编译器通常比其他编译器更聪明是很有用的。我似乎记得程序是让C#将其一半编译为NetModule,然后将其传递给C ++编译器和链接器,它能够将其链接到C ++部分并创建最终的程序集。

如果您只打算编写少量C#代码,另一种方法是学习您想要使用的.NET功能的VC ++语法,并完全避免使用C#。 VC ++可以像C#一样声明托管接口和类型,如果你不会在C#中编写太多实际代码,那么这可能会更容易。