亡羊补牢——出现系统丢失MSVCR120d.dll、MSVCP120d.dll丢失的问题

电脑配置环境描述:WIN10+VS2015+OpenCV 3.4.1 ×86Debug编译环境

问题描述

OpenCV高版本只能有×64版本的,为了实用32位编译平台自己编译了一个32位的OpenCV库,适用最高VS版本是VS2013,一直用的是release模式。结果今天第一次用debug模式出现了如标题所示问题,经过一番寻觅发现了出现问题的原因和解决方案。

问题产生的主要原因是vs2012编译了一个用vs2013生成的dll,是在选择第三方库时选择vc版本时出现的问题,dll文件和VS2015相关匹配情况如下。

  • vc8 = Visual Studio 2005

  • vc9 = Visual Studio 2008

  • vc10 = Visual Studio 2010

  • vc11 = Visual Studio 2012

  • vc12 = Visual Studio 2013

  • MSVCP80.DLL is from Visual Studio 2005

  • MSVCP90.DLL is from Visual Studio 2008

  • MSVCP100.DLL is from Visual Studio 2010

  • MSVCP110.DLL is from Visual Studio 2012

  • MSVCP120.DLL is from Visual Studio 2013 

  • (MSVCR.dll的情况类似)

换句话说,就是人家OpenCV专用匹配的VS和你电脑上的VS版本不匹配。这也就解释了我心头的一个疑惑,就是如果说一个OpenCV只支持某几个VS版本,那我其他的VS版本是不是就不能用这个库了呢?答案是当然可以用,只不过需要"添油加醋一番",给你的电脑加上几个dll。

解决方案

首先要明白一个概念:64系统下,system32文件夹存放的dll是64位dll,syswow64文件夹存放的dll是32位dll。这一点很容易弄混淆。

那么第一个解决方案就是:那么假设你得到了缺失的这两个文件,(在32位编译环境中)那么就应该把它放在syswow64下,而不是system32。

第二个解决方案:既然MSVCR120.dll和MSVCD120.dll是VS2013的家伙,那就安装一个VS2013自然会自动安装。

第三个解决方案: 换一个适合自己IDE的OpenCV版本。

注:文件的下载请参考作者的资源,传送门https://download.csdn.net/download/coldwindha/10635375。

附加解释

这两个文件到底代表什么意思,有什么用?
msvcr120.dll中: MS = Microsoft  V = Visual  C = C program language  R = Run-time  120 = Version 

msvcp120.dll中: MS = Microsoft  V = Visual  CP = C++  120 = version 
msvcr120d.dll和msvcp120d.dll是 上述文件的debug版本 。
release版本dll是vcredist_x86.exe和vcredist_x64.exe安装的(x86安装到syswow64,x64安装到system32)。 
debug版本dll是vs2013安装的(32位dll安装到syswow64,64位dll安装到system32)。

你可能感兴趣的:(OpenCV)