MSVCP120d.dll丢失

每次我想编译我的Visual Studio项目,我得到MSVCP120d.dll丢失的消息。 谷歌不能帮助我。 我已经安装了一些可再分发的软件,但他们没有帮助。 我也发现这个:

Msvcp120d.dll C ++运行时的debugging版本。 不允许重新分配。

http://msdn.microsoft.com/en-us/library/windows/hardware/dn448963(v=vs.85).aspx

从评论中,问题是由Visual Studio 2013中使用Visual Studio 2013编译的项目中生成的dll导致的。其原因是第三方库命名为包含dll vc11,vc12的文件夹。 对于任何使用编译器版本(小于4位)的系统,必须小心,因为这与Visual Studio的版本(Visual Studio 2010除外)不匹配。

  • vc8 = Visual Studio 2005
  • vc9 = Visual Studio 2008
  • vc10 = Visual Studio 2010
  • vc11 = Visual Studio 2012
  • vc12 = Visual Studio 2013
  • vc14 = Visual Studio 2015

Microsoft C ++运行时dll使用也是基于编译器版本而不是Visual Studio版本的2或3位代码。

  • MSVCP80.DLL来自Visual Studio 2005
  • MSVCP90.DLL来自Visual Studio 2008
  • MSVCP100.DLL来自Visual Studio 2010
  • MSVCP110.DLL来自Visual Studio 2012
  • MSVCP120.DLL来自Visual Studio 2013
  • MSVCP140.DLL来自Visual Studio 2015

我发现自己在这方面浪费时间寻找解决办法,我怀疑将来再做一次。 所以这里给我自己和其他可能会觉得有用的人的提示。

如果MSVCP120.DLL丢失,这意味着您尚未安装Visual Studio 2013(x86和x64)的Visual C ++可再发行组件包。 安装,重新启动,你应该在c:\ Windows \ System32中find这个文件。

现在,如果MSVCP120D.DLL丢失,这意味着您正在尝试运行的应用程序是以debugging模式构build的。 正如OP所提到的,运行时的debugging版本是不可分发的。

那么我们该怎么办?

那么,我知道一个选项:转到您的项目的debuggingconfiguration> C / C ++>代码生成>运行时库,然后selectmultithreadingdebugging(/ MTd)。 这将静态链接到您的可执行文件MSVCP120D.dll。

如果您只是想快速find某些东西,还有一个快速修复:从sys32(我的是C:\ Windows \ System32)文件夹中复制MSVCP120D.DLL。 您可能还需要MSVCR120D.DLL。

快速修复的附录:为了减less猜测,您可以使用依赖关系的步行者 。 用依赖walker打开你的应用程序,你会看到需要什么dll文件。

例如,我最近的应用程序是在Visual Studio 2015(Windows 10 64位计算机)中构build的,我将其定位到32位Windows XP计算机。 使用依赖walker,我的应用程序(见截图)需要以下文件:

  • opencv _ *。dll < – 我自己的dll文件(也可能有依赖关系)
  • msvcp140d.dll < – SysWOW64 \ msvcp140d.dll
  • kernel32.dll < – SysWOW64 \ kernel32.dll
  • vcruntime140d.dll < – SysWOW64 \ vcruntime140d.dll
  • ucrtbased.dll < – SysWOW64 \ ucrtbased.dll

除了我已经构build的opencv *文件,我还需要从C:\ Windows \ SysWow64(System32 for 32-bit)复制系统文件。

别客气。 🙂

当我在VS 2015上实现OpenCV 2.4.11时,我遇到了同样的问题。我试图通过三种方法逐一解决这个问题, 但是它们不起作用

  1. 在线下载MSVCP120.DLL并将其添加到Windowspath和OpenCV bin文件path
  2. 为Visual Studio 2013 x86和x86安装Visual C ++可再发行组件包
  3. 调整debugging模式。 转至configuration> C / C ++>代码生成>运行时库并selectmultithreadingdebugging(/ MTd)

最后,我通过重新安装VS2015来解决这个问题, 并select了可以安装的所有选项 ,这需要很大的空间,但它确实有效。

我为32位版本下载了msvcr120d.dllmsvcp120d.dll ,然后将它们放到我的项目的Debug文件夹中。 它运作良好。 (我的电脑是64位版本)

我的问题是将x64编译部署到远程testing机器上。 我find了msvp120d.dll和msvcr120d.dll的x64版本

 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\Debug_NonRedist\x64\Microsoft.VC120.DebugCRT 

如果你实际上没有利用Debug库,而只是试图编译默认的VS“Debug”configuration,那么你可以简单地改变为“Release”configuration。