哪个选项是“运行时库”和“使用MFC”的最佳选择

时间:2012-03-07 16:52:05

标签: visual-c++ mfc runtime

我想在VS 2008中用 VC ++编写一个程序 我希望我的程序可以在 WIN NT,XP,Vista和WIN 7 上运行。
我希望我的程序只是一个 .EXE 文件。

我不知道" 运行时库"的选项和" 使用MFC "

如下组合:

------------------------------------------------------------------------
|                               |Multi-threaded  |   Multi-threaded DLL|      
------------------------------------------------------------------------
|Use MFC in a Static Library    |        A       |         B           |
------------------------------------------------------------------------
|Use MFC in a Shared DLL        |        C       |         D           |
------------------------------------------------------------------------

我有一些问题,如果你有了,请你帮我一个忙。感谢。

1 。四种组合哪一个是我的最佳选择? A,B,C或D
2 。我测试后,选择 B 会出现编译错误,为什么?
3 。当我在VS中创建项目或解决方案时,默认选项为 D ,因此D对于commond程序来说,最佳选择是什么?

:)等你完美答案。

2 个答案:

答案 0 :(得分:1)

我个人的偏好是使用MFC作为静态库,因此没有其他依赖项。在编写MFC时,通常使用共享DLL来节省资源,但在这个Gigabyte RAM和Terabyte磁盘时代,几百K并不重要。

使用MFC作为DLL有一个优点,即如果有Service Pack更新,则可以安装新的DLL而无需替换应用程序。

如果您正在编写使用MFC的DLL(而不是EXE),则可能需要与应用程序共享MFC对象并使用应用程序的事件循环。在这种情况下,您被迫使用MFC作为DLL。我认为这就是你的组合“B”不起作用的原因。

答案 1 :(得分:0)

要在MFC中获得真正静态链接的可执行文件,您必须选择 A 。这将告诉MFC静态编译其类,并静态链接运行时库(我相信它是MSVCR.dll文件)。编译器不再允许选择B,因为它实际上没有用处。只有当您想要静态链接多个库(可能是您自己的库),但您希望所有库共享运行时时,才会使用该选项。你最终会遇到内存分配问题和其他废话。

因此,对于您的项目,选择静态链接和MFC以及运行时选项A.