修复“计算机中缺少”MSVCP110D.dll“问题

时间:2014-01-30 14:17:31

标签: visual-studio-2010 visual-studio-2012 dll

我面临以下(相当常见)问题:我在VS2010和/或VS2012中以调试模式运行我的程序,但在启动时崩溃,说:

  

程序无法启动,因为您的MSVCP100D.dll丢失了   电脑。尝试重新安装该程序以解决此问题。

现在我找到了许多可能的解决方案,但它们都不适用于我:

  • 使用/ MTd而不是/ MDd编译:实际上这确实解决了问题,但我不允许:我的程序是更大程序的一部分,而/ MD [d]是强制性的
  • 安装VS 2010 Redistributable package :这不起作用,因为我安装了VS 2012,所以此安装程序告诉我:“已检测到更新版本的Microsoft Visual C ++ 2010 Redistributable机器。“
  • 查找,将一个版本的MSVCP100D.dll拖放到正确的目录中:我不会将未知的DLL丢弃到可能会干扰其他事情的地方。
  • 最后的手段:重新安装VS2010 / VS2012 :可能,但因为它也意味着要重新安装我需要的许多其他软件包和插件,如果不是绝对必要,我想避免这种情况。< / LI>

还有其他选择吗?

5 个答案:

答案 0 :(得分:9)

Visual Studio REDIST软件包从不部署CRT文件的DEBUG版本。这是按设计

使用VS 2012或更高版本,部署CRUB的DEUBG版本的最简单方法是在测试计算机上安装“远程调试工具”软件包。

对于VS 2012,最新的远程调试工具包为here

对于VS 2013,最新的远程调试工具包为here

另一种选择是仅使用DLL的应用程序本地部署(即将其复制到您的app目录中)。再次这仅用于测试目的。对于应用程序的实际部署,您需要使用CRT的非调试版本。

如果您的开发计算机上发生此错误,那么您还有其他问题,因为安装了VS 2012后,您应该在该计算机上安装VS 2012 DEBUG CRT。

UPDATE :: 抱歉,我原本希望调试CRT DLL与远程调试器位和Direct3D 11调试设备一起包含在远程调试工具包中。唉,事实并非如此。见Preparing a Test Machine To Run a Debug Executable。您必须使用Program Files (x86) directory in \Common Files\Merge Modules中的MSM或从Program Files (x86) directory in \Microsoft Visual Studio <version>\VC\redist\Debug_NonRedist\并行复制DLL。 VS团队可能认为你已经这样做了,但是我建议他们把它推到远程工具包中。

答案 1 :(得分:1)

我有一个类似的问题(在VS 2012中制作的项目但是我在运行VS2013)并通过以下方式解决了这个问题:

  1. 在VS2013(或更新版本)中打开项目(或解决方案)

  2. 打开“项目”菜单并选择“重新定位项目”选项(这是第一个选项,但在应用之后,此选项消失了。)

  3. 重建您的解决方案。

答案 2 :(得分:0)

我是openCV和C ++的新手,在Windows 7,32位平台上使用openCV 2.4.10和Visual Studio Express 2013时遇到了同样的问题。如果我在不使用OpenCV的情况下编写了一个简单的程序,程序就会运行,但是当我使用OpenCV时,我得到了丢失的DLL错误。

This post明确了事情:

我猜我遇到的问题不是我的Visual Studio而是我的OpenCV。 OpenCV是在一个需要MSVCP110.dll的visual studio版本上编译的。我本可以尝试使用VS2013的另一个版本的OpenCV或再次编译OpenCV,但我的时间不够。相反,我在其他地方找到了dll文件并将其放在我的system32文件夹中(不确定是否推荐)。这解决了这个问题。但是,正如@slater所提到的,由于安全问题,我不建议从外部网站下载dll。

答案 3 :(得分:0)

这是调试运行时DLL。如果(并且仅在!),而您只想在未安装Visual Studio的系统上运行自己的应用程序的调试版本,则可以在以下位置找到缺少的DLLs

  • C:\Windows\System32(用于64位版本)
  • C:\Windows\SysWOW64(用于32位版本)

只需继续复制DLL,直到可执行文件运行即可。

如果这不是您要尝试的操作,请参考https://stackoverflow.com/a/27386721/2279059,这是正确的,但不太实用的答案。

答案 4 :(得分:-1)

我遇到了同样的问题,我发现原因是我在VS2013项目中使用了VS2012编译的dll。 JUST下载了丢失的dll并将其放在我的链接器路径和wala中:程序运行正常。我是从http://www.dll-files.com/下载的。

详细说明:我的程序在发布模式下工作,但在调试模式下没有,因为它说MSVCP110D.dll丢失了。我的代码是一个opencv图像处理程序。我将缺少的dll放在VS2013项目选项中的opencv链接器路径中。