c / c ++中的/ MD和/ MDD(多线程调试dll)有什么区别 - >代码生成
视觉工作室的属性......
答案 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一起安装。
如果我错了,请纠正我。