在Visual Studio Express 2012 for Windows桌面中组合c ++和c#项目(Windows 7)

时间:2013-02-19 16:00:38

标签: visual-studio-2012 express

一直在使用VS2010快递。用C#编写,我认为这是面向对象语言的一个很好的中间步骤。使我的代码有些重复的一件事是无法在C#中使用多个类继承。即我不能说A类继承自B类 C类。

c#非常棒,因为您可以快速轻松地使用按钮文本框并启动和运行拨号窗口。由于不包含MFC库,因此在快速版本的C ++中不可用。

现在,我想到了设置一个C#前端,它将参数保存到文件然后执行一个c ++读取文件,运行然后保存一个文件,我用另一个(或相同的)c#后端exec打开阅读和播放结果。但是,如果你想改变一些东西,这会让你再次执行整个序列变得麻烦。更不用说调试了,可能需要运行实例。

阅读Visual Studio 2012 Express for desktop announcment,它表示“您还可以将C ++,C#和Visual Basic项目组合到一个解决方案中,从而可以轻松地使用任何可用语言编写单个应用程序“。 http://blogs.msdn.com/b/visualstudio/archive/2012/09/12/visual-studio-express-2012-for-windows-desktop-is-here.aspx?PageIndex=3

现在我很高兴,毕竟我不期望也不需要在这个阶段做任何wizbank的东西,特别的按钮功能/设计更容易,并在C ++中提供MFC。

我的问题是:有没有人在Visual Studio 2012中尝试使用Windows 7中的Express for Windows桌面版本?即,您可以组合一个c ++和一个c#项目进行交互,例如在调试时将代码从一个项目跟踪到另一个项目吗?有什么特别的限制吗?我的意思是,如果它的组合可执行文件只是它没有多大用处,但我希望它不止于此,但还有多少呢?例如,在C#中设计的对象是否可以实现在c ++中设计的对象,是否可以向其他对象传递引用,例如保存输入和输出的类或者在c ++类中处理的数据,并且仍然可以在c#代码中访问以显示结果等?

我在下载新的快递版本之前就问过这个问题,因为我希望它会让我回归几个月,因为从C#转到C ++我觉得就像是从Visual Basic转到C.我不想进入所有版本麻烦(我真的不介意,但这将是一个巨大的退步)找出我不能“似乎”整合ac#前端与C ++ proccesing解决方案。

1 个答案:

答案 0 :(得分:2)

C ++与C#的接口有三种选择:

  1. pinvoke:您在C#中指定函数签名,并为它们指定一个属性,指定它们所在的DLL。如果您需要传递任何复杂类型,这是非常痛苦的。

  2. COM:C ++ DLL将实现C#代码调用的COM对象。

  3. C ++ / CLI:允许在单个C ++项目中混合托管和非托管C ++代码。它与其他库的接口非常好,但至少在VS 2010中,缺少有用的功能,如intellisense。如果你真的想走这条路,我会写三个项目:你的核心C ++代码作为静态库,你的C ++ / CLI DLL包装它,以及你的C#应用​​程序。