【问题标题】:Fixing the "MSVCP110D.dll is missing from your computer" issue修复“您的计算机中缺少 MSVCP110D.dll”问题
【发布时间】:2014-01-30 14:17:30
【问题描述】:

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

程序无法启动,因为您的文件中缺少 MSVCP100D.dll 电脑。尝试重新安装程序以解决此问题。

现在我找到了许多可能的解决方案,但没有一个对我有用:

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

还有其他选择吗?

【问题讨论】:

  • 使用 /MD 而不是 /MDd 编译。由于您似乎没有安装 VS2010,因此不太可能产生任何影响。这是获取该文件所需的内容。或者你以某种方式失去了它。从另一台机器复制它。 32 位版本进入 c:\windows\syswow64,64 位版本进入 c:\windows\system32。 检查机器上的磁盘后执行此操作,丢失文件绝不是一个好兆头。

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


【解决方案1】:

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

对于 VS 2012 或更高版本,部署 CRT 的 DEUBG 版本的最简单方法是在您的测试机器上安装“远程调试工具”包。

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

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

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

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

更新:: 抱歉,我希望调试 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 团队可能认为您已经这样做了,但我会建议他们将其放入远程工具包中。

【讨论】:

  • 嗯,不。安装 VS 2012 Remote Debugging Tools 没有安装 MSVCP100D.dll 也没有解决问题。
  • MSVCP100D.DLL 是 VS 2010 CRT。你的意思是MSVCP110D.DLL
  • 是的,对不起。一个错字。我收到关于缺少 MSVCP110D.DLL 的错误消息。
【解决方案2】:

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

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

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

  3. 重建您的解决方案。

【讨论】:

    【解决方案3】:

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

    This post 说清楚了:

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

    【讨论】:

      【解决方案4】:

      这是一个调试运行时 DLL。如果(并且仅当!)您只想在未安装 Visual Studio 的系统上运行您自己的应用程序的调试版本,那么您可以在

      中找到丢失的 DLL
      • C:\Windows\System32(适用于 64 位版本)
      • C:\Windows\SysWOW64(适用于 32 位版本)

      继续复制 DLL,直到您的可执行文件运行为止。

      如果这不是您想要做的,请参阅https://stackoverflow.com/a/27386721/2279059,这是正确但不太实际的答案。

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

        • 良好的诊断,糟糕的解决方案。我建议反对使用下载站点。
        • 永远不要从第三方站点下载 C++ 运行时 DLL,也不要向其他人推荐它。永远不要用谷歌搜索 DLL。这很危险!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-09
        • 2014-04-17
        • 1970-01-01
        • 2012-11-05
        • 1970-01-01
        • 1970-01-01
        • 2014-02-24
        相关资源
        最近更新 更多