首页 文章

如何决定是否将ATL,MFC,Win32或CLR用于新的C项目?

提问于
浏览
65

我'm just starting my first C++ project. I'米使用Visual Studio 2008 . 它实际上有点朦胧和CLR,但我对如何选择感到茫然 .

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

是CLR a bad idea

任何建议赞赏 .

Edit: 我've chosen C++ for this project for reasons I didn' t进入帖子,这不完全是技术性的 . 因此,假设C是唯一/最佳选择,我应该选择哪个?

5 回答

  • 8

    这取决于您的需求 .

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

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

    ATL和MFC之间的决定有点棘手 . 我会把你推荐给MSDN's page for choosing以便在它们之间作出决定 . ATL / MFC的优点在于您不需要.NET框架,只需要安装VC / MFC运行时进行部署 .

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

  • 20

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

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

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

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

  • 4

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

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

    更多WTL在这里:

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

  • 66

    我会非常好奇为什么你会在C中做到这一点 . 根据您的简要描述,C#听起来更合适 .

    只是详细说明一下,看看你给出的描述C CLR的链接 . 评价最高的答案(准确地说,在我看来)C适用于“内核,游戏,高性能和服务器应用程序” - 这些都不能描述您正在做的事情 .

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

  • 13

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

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

相关问题