原因:由于Codeblocks在配置完OpenCV后可能出现一些未定义的错误,于是这里总结了一个解决方法。
操作系统:win10
IDE版本:codeblocks 17.12(MinGW:Thread model: win32/gcc version 8.2.0 (MinGW.org GCC-8.2.0-3)
OpenCV版本:2.14.13.6-vc14
编译辅助工具:cmake-3.15.1-win32-x86
解释:为什么会出现前面‘未定义’的错误。
Codeblocks增加的编译器时MinGW,而当前所用的OpenCV版本是3.4.7,所带的build中的lib库只有V14,V15两个版本,这两个版本都是VS编译器编译出来的,放在MinGW环境自然就出问题了。之所以运行OpenCV的C接口代码没问题,个人推断是因为C接口的OpenCV 1.0时代的产物,自2.0版本之后基本都没有什么改变(C++接口是自2.0之后才出现的,之后OpenCV的更新也主要是针对C++接口了,这是趋势),所以MinGW和VS编译出来的C接口的Lib库基本差不多可以共用。而C++接口一直在更新改变,MinGW和VS编译出来的C++代码差异性也比较大,自然也就无法兼容了,因此出现找不到“VideoCapture定义”一类的错误也就不足为奇了。
概括之,出现上述问题的原因,其实就是用的codeblocks所带的MinGW编译器与OpenCV编译版本不一致造成的。(作者:goomaple 来源:优快云 原文:https://blog.youkuaiyun.com/goomaple/article/details/45649305 版权声明:本文为博主原创文章,转载请附上博文链接!)
解决方法:
- 由于之前使用codeblocks搭建完opencv3.4.7,报错未定义。将在此之前的进行的opencv环境变量的配置进行删除;
- 首先下载了编译工具cmake,官网下载版本cmake-3.15.1-win32-x86。(32位);
- 接着下载了OpenCV2.14.16,官网下载Releases - OpenCV;
- OpenCV2.113.6环境变量配置;
在这里,我将32位和64位都进行了配置。以防万一。
5.运行cmake,where is the source code填入OpenCV源代码文件sources路径;where to build the binaries填入编译文件需要存放的路径(该路径自己创建,最终文件夹路径必须是Debug);
6.点击“Configure”;在Specify the generator for this project中选择CodeBlocks - MinGW Makefiles,选中Specify native compilers,点击“Next”;
7.选择编译器路径,这里Compilers: C 选择目录为“codeblocks安装路径/MinGW/bin/gcc.exe”; C++ 选择目录为 “codeblocks安装路C:/MinGw/bin/g++.exe”,点击“Finish”
8.然后再次点“Configure”;
9.等走完进度条,选择需要的Generate选项,此处可以不操作直接点“Generate”,走完进度条便生成了“MinGW Makefiles”;
10.之后用mingw对其进行编译,cmd打开命令提示符窗口,进到刚才的保存目录,这里是“D:\work-softwares\OpenCV\MinGW\Debug”,输入“mingw32-make”,回车;等待运行完毕后,输入 mingw32-make install,回车;(此过程大约需1-2个小时)
11.运行完毕后便生成了mingw版的OpenCV库,进入“D:\work-softwares\OpenCV\MinGW\Debug\install”文件夹,便可以看到所需的头文件和库文件;
12.再次增加环境变量;cmake编译之后的bin文件。(红框标记下一行)
D:\work-softwares\OpenCV\MinGW\Debug\install\x86\mingw\bin
13.后面就是codeblocks的操作了,祝顺利。
-----------------------------------------------------
借鉴作者:goomaple
来源:优快云
原文:https://blog.youkuaiyun.com/goomaple/article/details/45649305