修复“您的计算机中缺少 MSVCP110D.dll”问题
Posted
技术标签:
【中文标题】修复“您的计算机中缺少 MSVCP110D.dll”问题【英文标题】:Fixing the "MSVCP110D.dll is missing from your computer" issue 【发布时间】: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。 在检查机器上的磁盘后执行此操作,丢失文件绝不是一个好兆头。 【参考方案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)并通过以下方式解决了它:
在VS2013(或更新版本)中打开项目(或解决方案)
打开项目菜单并选择“重新定位项目”选项(这是第一个选项,但应用后,此选项消失了)。
重建您的解决方案。
【讨论】:
【参考方案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 的系统上运行您自己的应用程序的调试版本,那么您可以在
中找到丢失的 DLLC:\Windows\System32
(适用于 64 位版本)
C:\Windows\SysWOW64
(适用于 32 位版本)
继续复制 DLL,直到您的可执行文件运行为止。
如果这不是您想要做的,请参阅https://***.com/a/27386721/2279059,这是正确但不太实际的答案。
【讨论】:
【参考方案5】:我有同样的问题,我发现原因是我在一个VS2013项目中使用了用VS2012编译的dll。刚刚下载了丢失的 dll 并将其放在我的链接器路径和 wala 中:程序正常工作。我是从http://www.dll-files.com/下载的。
详细信息:我的程序在发布模式下工作,但不是在调试模式下,因为它说 MSVCP110D.dll 丢失。我的代码是一个 opencv 图像处理程序。我把丢失的dll放在VS2013项目选项的opencv链接器路径中。
【讨论】:
良好的诊断,糟糕的解决方案。我建议反对使用下载站点。 永远不要从第三方站点下载 C++ 运行时 DLL,也不要向其他人推荐它。永远不要用谷歌搜索 DLL。这很危险!以上是关于修复“您的计算机中缺少 MSVCP110D.dll”问题的主要内容,如果未能解决你的问题,请参考以下文章
Android Gradle 插件热修复实现 ① ( Android 热修复系统组成 | 热修复工作流程 | 热修复使用到的技术 | 热修复框架选择注意事项 )
Android Gradle 插件热修复实现 ① ( Android 热修复系统组成 | 热修复工作流程 | 热修复使用到的技术 | 热修复框架选择注意事项 )