.NET GUI - C#vs C++/CLI

Eri*_*ser 8 c# windows user-interface c++-cli

我正在写一个小应用程序,需要一些列表框,按钮,文本框.它将与Boost,MySQL等C++静态库链接.该项目需要win32功能.我认为Winforms会很好(MFC和CodeJock需要太多时间).

所以C++/CLI似乎非常适合这项工作.只需在GUI旁边使用标准C++即可.然后我遇到线程,建议你用C#编写GUI.然后使用p/Invoke(慢速)或C++/CLI接口到标准C++ DLL.

示例:http://social.msdn.microsoft.com/Forums/en-US/clr/thread/6ae877ac-07b4-4d26-8582-de475ee9a5cb

为什么?使用C#作为winforms GUI而不是C++/CLI有什么好处(它们看起来一样,命令是相同的).使用C++/CLI可执行文件而不是标准C++可执行文件有什么缺点.我可以理解跨平台兼容性是否存在问题,但是您可能根本不使用托管功能(GUI除外).

我不明白为什么你会使用C#,然后到目前为止用"引擎DLL"分开它.除非"引擎DLL"当然也用于其他应用程序.

谢谢

Jer*_*emy 19

我认为关于这个问题的大多数建议都围绕这样一个事实:C#只是一个比C++/CLI更好的创建.NET应用程序的环境.语法更清晰,工具更好 - 在Visual Studio和第三方中都是如此.您将从几乎所有人都更熟悉C#的开发人员那里获得更多更好的支持.

C++/CLI应用程序与标准C++有很大的不同,所有那些^和%字符我至少觉得它不是C++.

大多数建议也来自于您希望创建.NET应用程序,而C++/CLI更多地用作粘合层.每当我使用C++/CLI时,它都是勉强的,几乎总是因为某些第三方库有许多复杂的C/C++对象.使用C#和P/Invoke时,通常必须创建类来镜像与您正在连接的软件的C++头文件中的结构和类.保持同步是劳动密集型的,并且容易犯错误.此外,弄清楚如何使用指向结构数组结构的指针编组结构将使你的大脑融化!

我的一般建议是使用C#(或VB.NET)为您的应用程序创建尽可能多的代码.当您需要调用Win32 API和/或第三方SDK时,使用P/Invoke并且接口和参数很简单.如果不可能,请使用C++/CLI作为粘合层.

在团队环境中,您的开发人员会感谢您将C++/CLI的使用限制在绝对需要的地方.C++/CLI专业知识并不常见.