MSVCP120d.dll missing

MSVCP120d.dll missing

本文关键字:missing dll MSVCP120d      更新时间:2023-10-16

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

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

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

根据注释,该问题是由于在使用Visual Studio 2012编译的项目中使用了使用Visual Studio 2013生成的dll而引起的。原因是第三方库命名为包含dlls 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
  • vc15=Visual Studio 2017
  • vc16=Visual Studio 2019

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

  • 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之间存在二进制兼容性。

我发现自己在浪费时间寻找解决方案,我怀疑以后还会这样做。因此,这里有一个提示给我自己和其他可能觉得这很有用的人。

如果缺少MSVCP120.DLL,则表示您尚未安装Visual Studio 2013的Visual C++可再发行软件包(x86和x64)。安装后,重新启动,您应该可以在c:\Windows\System32中找到此文件。

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

那么我们该怎么办呢?

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

如果你只想快速更新,还有一个快速修复方法:从sys32(我的是C:\Windows\System32)文件夹复制MSVCP120D.DLL。您可能还需要MSVCR120D.DLL。

快速修复程序的附录:为了减少猜测,您可以使用依赖助行器。使用依赖项助行器打开您的应用程序,您将看到需要哪些dll文件。

例如,我最近的应用程序是在Visual Studio 2015(Windows 10 64位计算机)中构建的,我的目标是32位Windows XP计算机。使用依赖助行器,我的应用程序(见屏幕截图)需要以下文件:

  • 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(32位的System32)复制系统文件。

不客气。:-)

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

  1. 在线下载MSVCP120.DLL并将其添加到windows路径和OpenCV bin文件路径
  2. 为Visual Studio 2013安装x86和x86的Visual C++可再发行包
  3. 调整调试模式。转到配置>C/C++>代码生成>运行库,然后选择多线程调试(/MTd)

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

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

我的问题是x64编译部署到远程测试机器上。我在中找到了msvp120d.dll和msvcr120d.dll的x64版本

C:Program Files (x86)Microsoft Visual Studio 12.0VCredistDebug_NonRedistx64Microsoft.VC120.DebugCRT

我在Visual Studio Pro 2017中也遇到了同样的问题:在发布模式中缺少MSVCP120.dll文件,在调试模式中丢失MSVCP120d.dll文件。我按照此处的建议安装了Visual Studio 2013的Visual C++Redistributable Package和Visual C++2013的Update以及Visual C++Redistibutable Package。Microsoft对此进行了回答,修复了发布模式。对于调试模式,最终起作用的是将msvcp120d.dll和msvcr120d.dll从另一台计算机(使用Visual studio 2013)复制到C:\Windows\System32 中

替代方法:不安装Redistributable包。

在一些github中查看相关的dll,有些人上传了他们的应用程序依赖关系的参考dll。

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

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

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