opencv-3.1.0.exe解压后现成的竟然只有x64版的vc12(VS2013)和vc14(VS2015)的动态链接库,当年opencv2.4.x版本解压后可是一大堆各种版本的(什么x86(32位),x64的,vc9,vc10的...),因为项目需要32位的静态库,虽然电脑上安装了VS2013,但是还是VS2010用的习惯,只好自己用cmake对opencv-3.1.0的sources生成VS2010的项目,具体cmake生成opencv-3.1.0项目这里暂时略过,反正网上教程很多....主要是在cmake配置的时候根据自己的需要去掉很多选项,现在的opencv是太庞大了..
1) 去掉很多选项后(我是要生成静态库,把BUILD_SHARED_LIBS取消了,保留就生成的是动态链接库),打开OpenCV.sln,编译ALL_BUILD项目,....等待十几分钟,ok,没出错,所有lib库都生成成功了哦,至少是能生成成功.
2)lib库: 把C:\opencv-3.1.0\DIY_Build\3rdparty\lib\Release(我的是这个路径)下的所有第三方静态库和C:\opencv-3.1.0\DIY_Build\lib\Release下的opencv3.1.0的静态库,都拷贝出来到C:\opencv-3.1.0\build\x86\vc10\staticlib(我自己创建的是这个路径)文件夹下,
3) 头文件: 然后是准备include文件夹(C:\opencv-3.1.0\build\include 我的是这个路径)下东西直接拷贝opencv-3.1.0.exe解压出来的即可. 以上两项相当于lib文件和头文件都准备妥当,我以为后面自己的项目调用的话就万事大吉了,可是万万没想到....
------------------------------------------------------------------------------------------------------------------------
错误(一): 错误症状: >opencv_core310.lib(matrix.obj) : error LNK2001: 无法解析的外部符号 _ippicvsSortDescend_8u_I@8
....有二三十个 _ipp开头的错误,ok,这个我知道了,肯定是cmake配置的WITH_IPP没有取消,于是乎在cmake配置里把WITH_IPP取消,再编译生成静态库,可是还是有错误,只剩下几个了,离成功又近了一步,hoho..
------------------------------------------------------------------------------------------------------------------------
错误(二): 错误症状: error LNK2001: 无法解析的外部符号 "class cv::Mat __cdecl cv::imread(class cv::String const &,int)"
晕,imread怎么会木有,我明明已经加了#pragma comment( lib, "opencv_highgui310.lib" ) ,莫非opencv3.x以后highgui模块里木有imread了,查看了OpenCV.sln里的opencv_highgui_object项目里的highgui相关的源代码,我靠在highgui.hpp果然找不到imread,后来瞄了一眼,发现有个opencv_imgcodecs项目,好吧,imread它就安详地躲在那里面,然后把opencv_imgcodecs310.lib加进去(#pragma comment( lib, "opencv_imgcodecs310.lib" ) )...
------------------------------------------------------------------------------------------------------------------------
然后再一编译我的项目,imread是ok了,可是又有一堆新的错误神器地诞生了....
错误(三):错误症状: ,无法解析的外部符号 _WebPGetFeaturesInternal...
无法解析的外部符号 "public: class Imf::Header const & __thiscall Imf::InputFile::header(void)const " (?header@InputFile@Imf@@QBEABVHeader@2@XZ)..
把cmake配置的WITH_WEBP,WITH_OPENEXR选项去掉了,再N次成静态库,ok,总算我的项目编译成功,能显示图片了..done..
顺便附上我的BUILD选项和WITH选项,其他项目我好像大概没动过吧