MSVCP120d.dll missing
MSVCP120d.dll missing
每次我想编译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时,我也遇到了同样的问题。我试图通过三种方法逐一解决这个问题,但它们都不起作用:
- 在线下载MSVCP120.DLL并将其添加到windows路径和OpenCV bin文件路径
- 为Visual Studio 2013安装x86和x86的Visual C++可再发行包
- 调整调试模式。转到配置>C/C++>代码生成>运行库,然后选择多线程调试(/MTd)
最后我通过重新安装VS2015并选择所有可以安装的选项来解决这个问题,这需要很大的空间,但它确实有效。
我下载了32位版本的msvcr120d.dll
和msvcp120d.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从这个位置复制到应用程序的调试目录中以开始运行。
- Qt5PrintSupportd.dll is missing
- 使用 dev-c++ 运行我的 GIS 应用程序可以"gdal201.dll is missing"
- cudart64_80.dll is missing
- MSVCP120d.dll missing
- Mingw libgcc_s_sjlj-1.dll is missing
- Visual Studio 2010: dll missing
- 在另一台计算机上运行.exe文件时"Missing MSCVP140.dll"和"Missing VCRUNTIME140.dll"
- Missing MSVCR90D.dll
- SDL2.DLL missing
- Xalan DLL missing
- C++ FLTK 1.30 MSVCR120.dll Missing
- freeglut.dll missing
- MSVCP110.dll is missing
- VCOMP100.dll missing?
- MSVCP140.dll missing
- Qt5Widgets.dll is missing?
- MSVCP100D.dll missing
- 使用VS2015 Express,删除VS2013社区,无法运行"MSVCP120d.dll missing"
- MSVCP100D.DLL is missing (SFML)
- VS2012 MSVCR120D.dll is missing