visual studio 2012 下配置OPENcv3.1 和CMAKE问题总结

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_25458977/article/details/54612655

visual studio 2012 下配置OPENcv3.1 和CMAKE问题总结

 

作为一个CMAKE的新手,在搭建环境的时候确实废了很多功夫,所以总结一下自己的过程,希望队大家有所帮助。

 

在开始之前有几点需要强调

1. 首先一定要确定好自己的电脑到底是32位的还是64位,下载cmake是要看清楚,低版本的cmake不区分,高版本的开始分WIN32和WIN64.

2. 不论是编译过程还是工程的生成过程,一定要注意所选的平台与自己的电脑配置相同.

3. 安装过程中要细心细心再细心。

当然,错误有时候无法避免,这时候要有针对性的查找资料,一种方法不行要果断换另一种方法,实在不行,就卸掉重新装(我指的是opencv和cmake,visualstudio 就算了。。。)

 

首先,我整个的配置过程都是参考的博文http://www.cnblogs.com/jliangqiu2016/p/5597501.html,所有的过程都很详细,这里就不再赘述,主要说一下自己所遇到的问题。

 

1. ffmpeg.dll和ffmpeg64.dll的hash值错误问题,主要原因是cmake是外网,不好下载,这里参考的是博主http://blog.csdn.net/kelvin_yan/article/details/53635641的做法,单独下载这两个文件后放到相应的目录里,都可以成功,但是.cmake文件那步我实在是没弄懂,到现在也没有解决,但是没关系,因为ffmpeg主要对视频进行分析,不着急做视频的可以跳过这一步,打开cmake.gui,找到WITH_FFMPEG把这项去掉即可;

然后就是下载ippicv,按照博主的方法也可以解决。

 

2.到这时候基本上第一次编译就可以顺利完成了,然后添加modules路径后进行第二次编译,这一次编译时我遇到了另一个错误:

cmakeError at cmake /opencvModule.cmake: Syntaxerror in cmake code at:C:/program files/opencv/source/cmake/opencvmodule.cmake   when parsing string C:.......

Invalid escape sequence \P.

主要就是说遇到语法错误,也百度很多,发现大家的错误都是在用VC++开始编译程序的时候遇到的,只有我的是在cmake搭建环境时,最后在Stake Overflow上找到解决方案,主要是填写MODULE路径时出了错,这一步一定不要在文件夹里重复制路径,因为直接复制过来的是向后的分隔符"\",实际上应该是向前的“/”,最好双击空白处,点击“···”一步步选择文件夹的添加,或者注意与上一行路径格式一致就行。

 

果然,改完“/”,问题就解决了。

3.第二次编译完成,接下来可以在VS里打开opencv.sln工程进行编译生成Debug和Release库了。

这个时候就遇到了另一个问题,即模块计算机x64与目标计算机x86不匹配。

针对这个问题网上给了很多解决方法,大概看一下那些方法:

1.在控制面板中点击卸载---visual studio2012---更改---修复,目的主要是添加x64的编译器;

2.在配置管理器中增加x64版本

这些都是基本的方法,如果你遇到了这个问题可以按照这些方法都来一遍,我就是这样,但没有解决掉,我出现这个提示主要是因为在cmake配置是选择出错。

cmake第一次编译的时候需要选择visual studio的版本,如果你的电脑是32位的那就选visual studio 11 2012 ,但如果你的是64位的一定要选择

visual studio 11 2012 (Win64),其他版本的也是如此,因为cmake需要的库必须都是在同一环境下生成,如果你需要64位的环境进行debug,你的cmake库就必须也是在64位visual studio的环境下生成的,这点很重要。

如果你已经选错了也不要着急,把opencv 和opencv_contrib 两个文件都删掉,在重新进行打开cmake.gui 进行编译,这时候按照自己的系统再重新选择VS环境即可。

 

4.编译opencv.sln时出现:

无法打开opencv_bioinspired310.lib的问题,这个问题主要是因为cmake版本过高,当然也可能是VS 版本太低,我原先的是cmake3.7 和VS 2012,编译时有这个问题,后来换cmake3.6后还有这个问题,直接换成cmake3.4,问题就解决了。 这里需要注意3.4的cmake没有专门的64位版本,下载32位的就可以,只要记得在选择VS环境的时候选择Win64 即可。

 

5.与问题4同时出现的还有一个问题:C:\.....\Microsoft.CppCommon.targets(172.5):errorMSB6006:"cmd.exe"已退出,代码为:-1073741571. 这个问题在编译时一起出现,但在更换cmake版本后也就没有了。 (tips: 因为编译opencv.sln的文件过多,而且一般还会有很多警告,如果有错误的话很难发现,这个时候,大家可以将输出的那些命令一起复制到WORD里,然后查找Error这个单词,错误就可以出现啦!!)

 

6.一切都弄好后开始试着运行,结果刚开始是无法打开core.hpp,一般这种情况都是库目录和包含目录没有添加对,我看网上的攻略,边看边检查,发现没有错误,很纳闷,后来果断关掉VS,重新打开,又重新配置库和包含目录,这个问题就解决了,感觉有时候软件打开时间久了,可能是我切换的工程数量太多了,互相之间有些混乱。反正一般这种问题主要就是核对目录什么的。

 

7.最后一个问题:丢失文件opencv_core310.dll

这个问题很怪,我建立了三个工程,都配置了同样的库目录和包含目录以及附加项,而且是同样的程序,在工程A里可以运行,在B和C都不可以,提示都一样。遇到这种问题,首先要检查自己的电脑中是否存在这个文件,我搜索后发现这个文件在我的电脑里的两个位置都有,一个是opencv原来的自带bin里,一个是后来配置的opencv_contrib的install文件,把这两个位置都添加到环境变量的PATH里,然后重启电脑,(如果不重启,环境变量无法真正添加到VS里,直接运行工程一般还是会出错),就没有问题啦!!

 

以上就是我目前为止遇到的问题了,目前OPENCV是没有问题了,但感觉像博主我在这么马虎的人,未来的编程路似乎会走的很艰难啊~~~~~~

欢迎大家修改指正,以及留言讨论,我好热心的!!!!  XD

展开阅读全文

没有更多推荐了,返回首页