VS2012運行opencv程序時缺少MSVCP120D.dll

首先聲明,看清題目,是VS2012(或更低版本),缺少的是MSVCP120D.dll,至於原因,後面說。當然,其餘的VS和缺少其餘的dll也可以參考


1. 問題原因

這個很重要,很多網上的解決方案都是找個vcredist_x86之類的C++運行庫安裝一下,有的還直接下載MSVCP120D.dll,將其拖入系統文件夾再進行regsvr32命令操作之類的.....這些方案至少對於我的問題是沒任何用處的。

我是運行的opencv程序,所以項目需要添加opencv的lib,之前認識不足,我直接用的opencv3.0中x86的VC12。opencv3.0的x86下有個VC12和VC11,而opencv3.1的x86下有個VC12和VC14。這個很重要,因爲VC中的庫對應的其實是不同版本的Visual Studio。

VC8 = Visual Studio 2005

VC9 = Visual Studio 2008

VC10 = Visual Studio 2010

VC11 = Visual Studio 2012

VC12 = Visual Studio 2013

......

看到這,原因差不多明瞭了,我用的是VS2012,但Library中包含的卻是VC12,所以出現了錯誤,至於爲什麼錯誤是缺少MSVCP120D.dll呢?

其實MSVCP120D.dll是VS2013編譯時產生的dll,所以用VS2012自然就無法生成MSVCP120D.dll。同樣,不同版本的VS產生的dll也不一樣:

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 

.......


2. 解決方法

知道了原因,解決方法就很簡單了,把包含的庫路徑和環境變量改成VC11在clean重新編譯就好了。經我嘗試,需要重啓VS。


3. 總結

主要是剛接觸opencv,對下面的庫不熟悉,所以導致錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章