搞了一天,遇到各种古怪问题!总觉得应该写下来纪念一下(免得遗忘)。
重要说明:由于相关配置百度遍地都是,这里把自己遇到的疑难杂症放在前面!
文中有说得不对/不当之处,请大虾指正!
1.VS2013+OpenCV2; VS2015+OpenCV3.
这样写应该很明了了。我可能是作死,本来用的VS2013,但是图个新按照官网(OpenCV)的指示下载了OpenCV3.3.0(OpenCV 3.3 has been released with greatly improved Deep Learning module and lots of optimizations.)如果你搜一下会发现码友们几乎都是用VS2015来配置OpenCV3的。那么VS2013+OpenCV3.3.0出现了什么问题呢?
系统:Win10 X64
运行程序总是出现错误:找不到以下几个dll.
vcruntime140d.dll
msvcp140d.dll
concrt140d.dll
ucrtbased.dll
这几个dll是微软的运行时组件里面的动态链接库,在目录C:\Windows\System32和C:\Windows\SysWOW64下可以查看到32和64位的dll。但是再看VS安装目录(以msvcp140d.dll为例,其他的我也不清楚在VS的哪个目录下)…\Microsoft Visual Studio 14.0\VC\redist\debug_nonredist\x86\Microsoft.VC140.DebugCRT仅有msvcp120d.dll而不是msvcp140d.dll。
这里补充下:
dll名称中带d的表示debug,没有就代表release。
vc10, vc11, vc12, vc14 分别表示VS2010, VS2012, VS2013, VS2015的Visual Studio使用的编译器版本。
很自然地,需要安装VS2015的运行库,实际上我电脑中有,以为是系统或者软件安装出错无法定位到该dll,就更新/重装了VS2015的运行库(微软官网)。然鹅丝毫,没有解决。
我认为应该是这个运行库只包含release的版本,因为在我的电脑系统目录下(再以msvcp为例)msvcp120.dll和msvcp120d.dll都有,但msvcp140.dll只有release版本。(因为安装VS2013时相应版本的debug dll会被一起安装,而msvcp140.dll是由安装VS2015运行库载入系统的。)
因此,在没有找到安全合适的vc14 debug的dll并且没有再安装VS2015的情况下,重新安装了OpenCV2.4.9,然后,然后就好使了。(—_—!)
2.关于Win32和x64平台。
其实在问题1出现之前还有个这个问题。
网友说是要在配置管理器中设置好Dubug | x64,我当然是这么设置的呀!但就是没搞明白为啥这个错误一直都在。后来干脆把默认活动解决方案/平台给修改成了x64。(当然这对于经常用x64而不是Win32的朋友来说是便利。)方法如下:
修改VS安装目录下:Microsoft Visual Studio 12.0\VC\VCWizards里面的三个文件:
default.vcxproj、DefaultTest.vcxproj、vcupgradedefault.vcxproj
用记事本打开,将Win32全部替换成x64即可。(注意备份!)
3.其他问题比较常见,请大家自行搜索解决,也欢迎大家在此讨论!
这里再说明一下主要配置内容:系统环境变量配置 -> VS环境配置:包括VC++包含(include)目录(自然是些头文件嘛);VC++库(lib)目录;链接器的输入-附加依赖项(.lib)
另外,OpenCV解压即安装。
给一个具体的配置参考链接:
https://www.zhihu.com/question/24400428
头一回写博客,头一回用MarkDown,嘿嘿~_~