MSVCP120d.dll缺失

时间:2014-02-11 16:52:23

标签: c++ visual-studio-2012

每次我想编译我的Visual Studio项目时,都会收到MSVCP120d.dll缺失的消息。谷歌无法帮助我。我已经安装了一些可再发行组件,但它们没有帮助。我也发现了这个:

  

Msvcp120d.dll C ++运行时的调试版本。没有再分配   允许的。

     

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

8 个答案:

答案 0 :(得分:54)

从评论,这个问题是通过使用在了与Visual Studio 2012的原因编译一个项目建成使用Visual Studio 2013是一个叫做包含的dll VC11,VC12文件夹第三方库dll文件引起的。必须小心使用任何使用编译器版本(少于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
  • vc15 = Visual Studio 2017
  • vc16 = Visual Studio 2019

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,2017和2019

Visual Studio 2015,2017和2019之间存在二进制兼容性。

答案 1 :(得分:41)

我发现自己浪费时间寻找解决方案,我怀疑将来再做一次。所以这是给自己和其他可能觉得有用的人的说明。

如果缺少MSVCP120.DLL,则表示您尚未安装Visual Studio 2013(x86和x64)的Visual C ++ Redistributable Packages。安装,重启,你应该在c:\ Windows \ System32。

中找到这个文件

现在,如果缺少MSVCP120D.DLL,这意味着您尝试运行的应用程序是在调试模式下构建的。正如OP所提到的,运行时的调试版本是不可分发的。

那我们该怎么做?

嗯,我知道有一个选项:转到Project的Debug配置> C / C ++>代码生成>运行时库并选择多线程调试(/ MTd)。这将静态链接MSVCP120D.dll到您的可执行文件。

如果您只想快速获取内容,还可以快速修复:从sys32(我的是C:\ Windows \ System32)文件夹中复制MSVCP120D.DLL。您可能还需要MSVCR120D.DLL。

快速解决方案的附录:为了减少猜测,您可以使用dependency walker。使用依赖性walker打开您的应用程序,您将看到需要哪些DLL文件。

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

  • opencv _ *。dll< - 我自己的dll文件(可能还有依赖项)
  • msvcp140d.dll< - SysWOW64 \ msvcp140d.dll
  • kernel32.dll< - SysWOW64 \ kernel32.dll
  • vcruntime140d.dll< - SysWOW64 \ vcruntime140d.dll
  • ucrtbased.dll< - SysWOW64 \ ucrtbased.dll

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

欢迎你。 : - )

答案 2 :(得分:2)

我的问题是将x64编译部署到远程测试机器上。我在

中找到了msvp120d.dll和msvcr120d.dll的x64版本
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\Debug_NonRedist\x64\Microsoft.VC120.DebugCRT

答案 3 :(得分:2)

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

  1. 在线下载MSVCP120.DLL并将其添加到Windows路径和OpenCV bin文件路径
  2. 为Visual Studio 2013安装Visual C ++ Redistributable Packages x86和x86
  3. 调整调试模式。转到配置> C / C ++>代码生成>运行时库并选择多线程调试(/ MTd)
  4. 最后我通过重新安装VS2015并选择了所有可安装的选项解决了这个问题,它占用了很多空间,但确实有效。

答案 4 :(得分:2)

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

答案 5 :(得分:1)

我在Visual Studio Pro 2017中有相同的问题:在发布模式下缺少MSVCP120.dll文件,在调试模式下缺少MSVCP120d.dll文件。 我按照此处Visual C++ Redistributable Packages for Visual Studio 2013的建议安装了Update for Visual C++ 2013 and Visual C++ Redistributable PackageMicrosoft answer,从而解决了发行模式。 对于调试模式,最终的工作是将另一台计算机(使用Visual Studio 2013)中的msvcp120d.dll和msvcr120d.dll复制到C:\ Windows \ System32

答案 6 :(得分:0)

替代方法:不安装可再发行软件包。

在某些github中查看相关的dll,一些人上传参考dll以了解其应用程序依赖性。

您可以在您的项目中下载和使用它们,我已经成功使用和运行了它们。

示例:https://github.com/Emotiv/community-sdk/find/master

答案 7 :(得分:0)

当这个问题出现时,我正在 VS 2019 上构建我的应用程序。您可以将这些 DLL 从 this 位置复制到应用程序的调试目录中。