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

3

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

我想使用.NET创建GUI,这可行吗? 谢谢!

3个回答

1

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

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


1

有很多选择,以下是我能想到的几个:

  • 将C++代码封装在Windows DLL中, 使用p/invoke从.NET调用C++代码。

  • 将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似乎总是更复杂,但如果其他选项变得过于限制,则学习一些关于它的知识是值得的。


0
你可以使用 interop 与非托管代码进行通信,并在托管代码中编写 GUI,但总的来说这不是一个很好的开发者体验。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接