Visual Studio C ++中/ MD和/ MDD有什么区别?

时间:2009-05-29 07:38:52

标签: c++ visual-studio visual-studio-2005

c / c ++中的/ MD和/ MDD(多线程调试dll)有什么区别 - >代码生成

视觉工作室的属性......

4 个答案:

答案 0 :(得分:6)

它们指定要使用的运行时。两者都使用多线程动态(DLL)运行时,但/ MDD版本使用调试版本,并为您定义_DEBUG符号。有关详细信息,请参阅this MSDN page

答案 1 :(得分:3)

调试版本(MDD)允许您在调试期间进入C和C ++库。对错误的堆操作和内存泄漏进行了额外的检查。对发布版本和调试版本具有依赖关系(例如DLL)可能会导致问题,因此建议您坚持使用/ MDD for debug version和/ MD for release version。

对于Visual Studio 2005/2008,如果您的应用程序使用/ MDD,但依赖于使用发布库构建的DLL,则还需要在项目设置中包含发布库的清单。

答案 2 :(得分:0)

与/ MDd链接的程序可能无法在大多数用户计算机上运行,​​因为不太可能在其上安装标准库的调试版本。

答案 3 :(得分:0)

如果在VS 2012中使用/ MDd进行编译,则会得到以下依赖项:MSVCP110D.dll。

Visual C ++ Redistributable Package安装不会提供此DLL。因此,如果要分发可执行文件,目标计算机必须已安装Visual Studio。

另一方面,使用/ MD进行编译将依赖于MSVCP110.dll,其中 与VS Redistributable Package一起安装。

如果我错了,请纠正我。