我刚刚开始我的第一个C ++项目。我正在使用 Visual Studio 2008 。它是一个单一窗体的Windows应用程序,可以访问几个数据库并启动WebSphere MQ事务。我基本上理解ATL,MFC,Win32(实际上我对它有点模糊)和CLR之间的差异,但我对如何选择感到茫然。

这些中的一个或多个是否只是为了向后兼容?

CLR 一个坏主意

任何建议表示赞赏。

修改 我为这个项目选择了C ++,原因是我没有在帖子中介绍,这些并不完全是技术性的。所以,假设 C ++是唯一/最佳选择,我应该选择哪个?

有帮助吗?

解决方案

这取决于您的需求。

使用CLR将为您提供最具表现力的库集(整个.NET框架),代价是将可执行文件限制为要求在运行时安装.NET框架,并限制您使用Windows平台(但是,所有4种列出的技术都只是Windows,因此平台限制可能是最不麻烦的。)

但是,CLR要求您使用C ++语言的C ++ / CLI扩展,因此您需要学习一些额外的语言功能才能使用它。这样做可以为您提供许多“额外内容”。例如访问.net库,完全垃圾收集等

ATL& MFC在两者之间做出决定有些棘手。我推荐你 MSDN的选择页面为了在他们之间做出决定。 ATL / MFC的优点是你不需要.NET框架,只需要安装VC / MFC运行时进行部署。

使用Win32直接提供最小的可执行文件,具有最少的依赖项,但更多的工作要写。您拥有最少量的帮助程序库,因此您正在编写更多代码。

其他提示

Win32是原始的,裸机的方式。这很乏味,难以使用,并且需要记住许多小细节,否则事情会以相对神秘的方式失败。

MFC构建于Win32之上,为您提供了一种面向对象的构建应用程序的方法。它不是Win32的替代品,而是一种增强功能 - 它为您完成了许多艰苦的工作。

System.Windows.Forms(我认为你的意思是CLR)是完全不同的,但与其基本结构有很大的相似之处。它是迄今为止最容易使用的,但需要.NET框架,在您的情况下可能会或可能不会成为障碍。

我的建议:如果你需要避免使用.NET,那么使用MFC,否则使用.NET(事实上,在这种情况下,我会使用C#,因为它更容易使用)。

就C ++而言,我会使用WTL。这是轻微的,您将很少(如果有)依赖,使其易于发货和安装。当我的应用程序包含一个可在大多数Windows版本上运行的EXE时,我觉得非常令人满意,但这可能不是您的担忧。

如果你选择转而使用.NET,那么C#几乎肯定是要走的路。

更多WTL在这里:

http://www.codeproject.com/KB/wtl/wtl4mfc1.aspx

我很好奇你为什么要在C ++中这样做。根据您的简要描述,C#听起来更合适。

只是详细说明一下,看看你给出的描述C ++ CLR的链接。评价最高的答案(准确地说,在我看来),C ++适用于“内核,游戏,高性能和服务器应用程序”。 - 似乎没有一个描述你在做什么。

从某种意义上说,MFC,ATL等将得到支持,是的,您将能够在未来版本的Visual Studio上编译您的应用程序,并在未来版本的Windows上运行它们。但是,它们并没有得到支持,因为API或语言中没有很多新的开发方式与CLR和C#中的相同。

CLR没有任何问题。和其他人一样,我建议使用C#,但是因为你有理由坚持使用C ++,那么使用.NET框架比使用ATL / MFC更容易几千倍,如果你还不熟悉它们(IMO)。

值得一提的是,如果您使用的是C ++ / CLR,那么您根本就不会使用C ++。 C ++ / CLR就像C#一样编译成CIL。我自己从未使用它,但我相信它的目的是允许您编译遗留代码并使其易于用于新的.NET代码,而不是允许新代码使用旧的C ++可执行文件。还有其他从.NET调用本机代码的方法,也许你应该探索。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top