Msvcp120d.dll C++运行时的调试版本。不允许再分发。
http://msdn.microsoft.com/en-us/library/windows/hardware/dn448963(v=vs.85).aspx
Msvcp120d.dll C++运行时的调试版本。不允许再分发。
http://msdn.microsoft.com/en-us/library/windows/hardware/dn448963(v=vs.85).aspx
根据评论,问题是由于在使用Visual Studio 2012编译的项目中使用了使用Visual Studio 2013构建的dlls引起的。造成这种情况的原因是第三方库命名了包含dlls的文件夹为vc11、vc12等。任何使用编译器版本(小于4位数字)的系统都必须小心使用,因为这与Visual Studio的版本不匹配(除了Visual Studio 2010)。
Microsoft C++运行时dlls也使用基于编译器版本而非Visual Studio版本的2或3位代码。
在Visual Studio 2015、2017和2019之间存在二进制兼容性。
我曾经浪费很多时间在这个问题上寻找解决方案,而且我也怀疑以后还会遇到类似的情况。所以这里给自己和其他可能有用的人做个记录。
如果提示缺少 MSVCP120.DLL,则说明你没有安装 Visual Studio 2013(x86 和 x64)的 Visual C++ Redistributable Packages。安装它,重新启动计算机,然后你应该能在 c:\Windows\System32 目录下找到这个文件。
如果提示缺少 MSVCP120D.DLL,则说明你试图运行的应用程序是在 Debug 模式下编译的。正如 OP 所提到的,运行时的调试版本是不能分发的。
那么,我们该怎么办呢?
嗯,我知道有一个选项:进入你的项目的 Debug 配置 > C/C++ > Code Generation > Runtime Library,选择 Multi-threaded Debug (/MTd)。这将把 MSVCP120D.dll 静态链接到你的可执行文件中。
如果你只想快速解决问题,也有一个快速方法:从 sys32 文件夹(我的是 C:\Windows\System32)中复制 MSVCP120D.DLL。你可能还需要 MSVCR120D.DLL。
关于快速修复的补充:为了减少猜测,你可以使用 dependency walker。用 dependency walker 打开你的应用程序,你会看到哪些 dll 文件是需要的。
例如,我的最近一个应用程序是在 Visual Studio 2015(Windows 10 64 位机器)中构建的,我打算将其针对 32 位 Windows XP 机器。使用 dependency walker,我的应用程序(见截图)需要以下文件:
除了我已经构建的opencv*文件之外,我还需要从C:\Windows\SysWow64(32位系统为System32)复制系统文件。
不用谢。:-)
Debug
库,而只是尝试在默认的 VS “Debug” 配置下编译,那么你可以简单地切换到“Release”配置。 - Patrizio Bertoni我下载了32位版本的 msvcr120d.dll
和 msvcp120d.dll
,然后将它们放入我的项目的 Debug
文件夹中。这样做很有效。(我的电脑是64位版本)
我在使用 Visual Studio Pro 2017 时遇到了相同的问题:Release 模式下缺少 MSVCP120.dll 文件,Debug 模式下缺少 MSVCP120d.dll 文件。 根据 Microsoft 的回答建议,我安装了 Visual Studio 2013 的 Visual C++ Redistributable Packages 和 Visual C++ 2013 和 Visual C++ Redistributable Package 的更新,这解决了 Release 模式下的问题。 对于 Debug 模式,最终起作用的方法是从另一台电脑(带有 Visual Studio 2013)复制 msvcp120d.dll 和 msvcr120d.dll 文件到 C:\Windows\System32 目录中。
我遇到的问题是针对远程测试机器进行x64编译。我在以下位置找到了msvp120d.dll和msvcr120d.dll的x64版本:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\Debug_NonRedist\x64\Microsoft.VC120.DebugCRT
另一种方法:无需安装Redistributable包。
在一些github上查找相关的dll,有些人会上传应用程序依赖的参考dll。
您可以下载并在您的项目中使用它们,我已经成功地使用和运行它们。