我面临以下(相当常见)的问题:我在VS2010和/或VS2012中以调试模式运行我的程序,但在启动时崩溃,说:
程序无法启动,因为您的计算机缺少MSVCP100D.dll.尝试重新安装该程序以解决此问题.
现在我找到了许多可能的解决方案,但它们都不适用于我:
使用/ MTd而不是/ MDd编译:实际上这确实解决了问题,但我不允许:我的程序是更大程序的一部分,而/ MD [d]是强制性的.
安装VS 2010 Redistributable软件包:这不起作用,因为我安装了VS 2012,因此此安装程序告诉我:"已在计算机上检测到更新版本的Microsoft Visual C++ 2010 Redistributable."
查找,拖放一个版本的MSVCP100D.dll到正确的目录:我不会将未知的DLL丢弃到可能会干扰其他事情的地方.
最后的手段:重新安装VS2010/VS2012:可能,但因为它也意味着重新安装我需要的许多其他软件包和插件,如果不是绝对必要,我想避免这种情况.
还有其他选择吗?
Visual Studio REDIST软件包从不部署CRT文件的DEBUG版本.这是设计的.
使用VS 2012或更高版本,部署CRUB的DEUBG版本的最简单方法是在测试计算机上安装"远程调试工具"软件包.
对于VS 2012,最新的远程调试工具包就在这里
对于VS 2013,最新的远程调试工具包就在这里.
另一个选择是只使用DLL的应用程序本地部署(即将其复制到您的app目录中).同样,这仅用于测试目的.对于应用程序的实际部署,您需要使用CRT的非调试版本.
但是,如果您的开发计算机上发生此错误,那么您还有其他问题,因为安装了VS 2012后,您应该在该计算机上安装VS 2012 DEBUG CRT.
更新::抱歉,我原本希望调试CRT DLL包含在远程调试工具包中,以及远程调试器位和Direct3D 11调试设备.唉,事实并非如此.请参阅准备测试计算机以运行调试可执行文件.您必须使用MSM Program Files (x86) directory in \Common Files\Merge Modules
或从中并行复制DLL Program Files (x86) directory in \Microsoft Visual Studio <version>\VC\redist\Debug_NonRedist\
.VS团队可能认为你已经这样做了,但我建议他们把它推到远程工具包中.