对于MSVC9 Win32项目,以下选项显示在Configuration Properties - >下。 C / C ++ - > Code Geberation - >运行时库:
/ MT,/ MTd,/ MD,/ MDd
是否正确使用DLL / MTd和静态lib / MDd?
感谢。
答案 0 :(得分:5)
这里有两个问题。
首先,您需要选择是否需要CRT的调试版本或发布版本。调试版本具有特殊检查和代码路径,旨在帮助您在编写应用程序时捕获错误。您应该不将它们用于应用程序的最终发布版本,因为它们可能会降低其执行速度,并且因为它们不能自由地再发布。
然后,您需要确定是否要静态将运行时链接到您的应用程序,或者是否要从DLL中使用动态。静态链接允许您创建独立的EXE文件,不依赖于任何DLL文件;它有效地将运行时代码编译到应用程序的二进制文件中。这可以使部署更容易,但其代价是无法利用对运行时DLL进行的安全性和其他更新。您必须重新编译应用程序才能利用新的运行时更新。动态链接是Windows应用程序的典型(和推荐)路径。这意味着您的应用程序将需要存在适当版本的CRT DLL才能运行它,但它允许运行时库轻松更新,这意味着多个程序可以共享相同的代码,从而减小其大小在磁盘上。
因此,/MD
表示动态链接,/MT
表示静态链接。每个选项后面的小写d
表示使用了 debug 版本的运行时库。
/ MD =动态链接到CRT的发布(可再发行)版本
/ MDd =动态链接到CRT的调试(不可再发行)版本
/ MT =静态链接到CRT的发布(可再发行)版本
/ MTd =静态链接到CRT的调试(不可再发行)版本
有关详情,请参阅MSDN。