我已经用C++编写了应用程序的所有代码。它是使用 Visual Studio 2010 编写的标准C++。
我想使用 .NET 创建一个 GUI。可能吗?谢谢!
有很多选择,这是我头顶上的一些:
- 将
c++ 代码包装在 Windows DLL 中,使用p/调用。
将 c++ 代码包装在 com 对象中,.NET 可以直接使用 com 对象。
将 c++ 代码包装在某种类型的托管 C++ 包装器 (C++/CLI),加载和使用.NET GUI 中的新程序集。
一些更奇特的想法:
-
使用某种类型的进程间通信,就像套接字一样。你的 c++代码必须在另一个中运行过程。我想你也可以做将 C++ 代码放入 Web 服务中。
-
在命令行上运行 c++ 代码,由 .NET GUI 启动。通过通过命令行的参数参数,捕获并解析来自 C++ 的标准输出文本在 .NET 应用中编程。
编辑:我推荐DLL和p/invoke。与普通的 dll 相比,COM 对象在传递更复杂的类型和公开对象模型方面具有优势,但 COM 对象在创建和安装/注册(甚至带有 ATL、清单文件等)时很痛苦。使用 C++/CLI 似乎总是比许多项目的价值更复杂 - 但如果其他选项变得过于有限,则值得学习一下。
是的,这正是 Expression Studio 的工作方式,它是 WPF 的 GUI 编辑工具。可以使用类似的方法,并通过 P/Invoke 向 .NET 中的 GUI 应用公开所有功能。
只需保持您的 UI 尽可能精简即可。此外,如果您发现自己在C++和 C# 应用程序之间有大量接触点,那么您将需要考虑使用 C++/CLI 作为它们之间的粘合层。C++/CLI 并不是编写整个 UI 的最佳编程语言,但它可以充当 C# 前端和后端之间非常好的中间层C++。
您可以用互操作与非托管代码进行通信,并用托管代码编写 GUI,但一般来说,这不会是一个很好的开发人员体验。