1

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

c# 很棒,因为您可以快速轻松地获得带有按钮文本框和拨号的窗口并运行。由于不包含 MFC 库,因此这在 Express 版本的 C++ 中不可用。

现在,我想设计一个 C# 前端,它将参数保存到文件中,然后执行一个 c++,它读取文件、运行然后保存一个文件,我用另一个(或相同的)c# 后端 exec 打开来读取和播放ard 与结果。但是,如果您想更改某些内容,那么总是再次执行整个序列会变得很麻烦。更不用说调试,可能需要实例运行。

阅读 Visual Studio 2012 Express for desktop 公告时,它表示“您还可以将 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 的 Express for Windows 7 桌面版中尝试过这个?即,您可以将交互的 c++ 和 ac# 项目结合起来,例如在调试时将代码从一个项目跟踪到另一个项目吗?有什么特别的限制吗?我的意思是,如果它只组合可执行文件,它没有多大用处,但我希望它不止于此,但还有多少?例如,一个用 C# 设计的对象是否可以实例化一个用 C++ 设计的对象,将它传递给其他对象的引用,例如保存输入和输出的类或在 C++ 类中处理并且仍然可以在 C# 代码中访问以显示结果的数据等?

我在下载新的快速版本之前问这个问题,因为我希望它会让我倒退几个月,因为从 C# 到 C++ 我认为就像从 Visual Basic 到 C。我不想陷入所有麻烦(我真的不介意,但这将是一个巨大的退步)发现我不能“似乎”将 ac# 前端与 C++ proccesing 解决方案集成。

4

1 回答 1

2

您可以通过三种方式将 C++ 与 C# 连接起来:

  1. pinvoke:您在 C# 中指定函数签名并为它们提供一个属性,指定它们驻留在哪个 DLL 中。如果您需要传递任何复杂的类型,这样做是相当痛苦的。

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

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

于 2013-02-19T16:29:27.913 回答