如何使用.NET for C ++应用程序创建接口?

时间:2011-05-14 16:13:45

标签: .net c++ user-interface interop

我已经用C ++编写了应用程序的所有代码。它是使用Visual Studio 2010编写的标准C ++。

我想用.NET创建一个GUI。可能吗? 谢谢!

3 个答案:

答案 0 :(得分:1)

是的,这正是Expression Studio的工作原理,它是WPF的GUI编辑工具。您可以使用类似的方法,通过P / Invoke将所有功能暴露给.NET应用程序。

让您的UI尽可能地保持精简。此外,如果您发现自己在C ++和C#应用程序之间有大量的联系点,那么您将需要考虑使用C ++ / CLI作为它们之间的粘合层。 C ++ / CLI并不是编写整个UI的最佳编程语言,但它可以作为C#前端和C ++后端之间非常好的中间层。

答案 1 :(得分:1)

有很多选择,这里有一些我的头脑:

  • 将c ++代码包装在Windows DLL中, 使用.NET从.NET调用c ++代码 P /调用。

  • 将c ++代码包装在com对象中, .NET可以直接使用com对象。

  • 将c ++代码包含在某种类型的内容中 托管c ++包装器(c ++ / CLI),加载和使用 .NET GUI中的新程序集。

一些更奇特的想法:

  • 使用某种类型的进程间 沟通,像套接字。你的c ++ 代码必须在另一个代码中运行 处理。我想你也可以 将c ++代码转换为Web服务。

  • 在命令行上运行c ++代码, 由.NET GUI启动。通过 参数通过命令行 参数,捕获和解析 来自c ++的标准输出文本 程序回到.NET应用程序。

编辑: 我建议使用DLL和p / invoke。 COM对象比普通的dll更有利于传递更复杂的类型并暴露对象模型,但COM对象很难创建和安装/注册(甚至包括ATL,清单文件等)。对于许多项目来说,使用C ++ / CLI似乎总是比它的价值更复杂 - 但如果其他选项变得太有限,那么值得学习一下。

答案 2 :(得分:0)

您可以使用interop与非托管代码进行通信,并使用托管代码编写GUI,但一般来说,这不是一个出色的开发人员体验。