test
Posted ghostriderli
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了test相关的知识,希望对你有一定的参考价值。
opencv3.30 编译总结
主要总结了Windows上编译 opencv 的一些问题,后续,编译Linux 或者交叉编译的的时候在做总
结。 具体步骤以及常见的问题可以在How to setup Qt and openCV on Windows中找到解决办法,如果有其
它问题可以参看博客如下:
注意: 以上的所有的博客都指出 CMAKE_BUILD_TYPE 选为 Realase/RelWithDebInfo,但
是在这个条件下编译,部分『属于』 Debug 的函数不能使用(例如,imshow()
),而这些 API 在
调试的时候很常用,因此最好编译出两个版本,Release 和 Debug 时分别使用对应动态库。
自己在编译过程中遇到的问题
平台:
- WIN10 64bit
- QT5.8(MinGW5.32 + QT Creater 4.21)
- Cmake 13.1
编译工具链问题
如果在编译过程中报错如下:
undefined reference to ‘__mingw_vfscanf‘
...
undefined reference to ‘__mingw_*‘
undefined reference to ‘__ms_vsnprintf‘
...
undefined reference to ‘__ms_vs*‘
造成上述问题的原因是:电脑里面有多个 MinGW* 的版本,执行 Cmake 生成的文件时,其可执行
命令是从环境变量里面最前面一个里面找到的,不一定是QT内置的 MingGW-w64 版本的命令。 需要
注意的是QT内置的 MinGW-w64 不是 MinGW。
则有可能是编译工具的问题,解决步骤如下:
- 检查电脑上是否有QT内置的 MinGW 之外的版本(如安装了codeblocks,或者自己下载了MinGW);
- 将找到的除QT内置版本外的MinGW从环境变量里去除();
- 将QT内置版本的MinGW增加到系统环境变量
PATH
里面;
D:QtQt5.8.0Toolsmingw530_32in
D:QtQt5.8.05.8mingw53_32in
最好两个都加进去
- 此时执行编译过程中使用的命令就是QT内置的 MinGW 的命令。
如果系统中存在多个编译工具(为了保险),则将QT的内置 MinGW 环境变量上移至最前面,编
译完成之后再修改回来
::hypot
has not been declared
stackflow
上的大神的方法是将报错的位置 安装Q位置:/Qt/Qt5.8.0/Tools/mingw530_32/i686-w64-mingw32/include/c++/cmath
1119 行 using::hypoy
改成using::_hypot
之后重新编译。
编译的时候如果没有出现这个问题就不要事先修改,等到出现这个错误之后再修改。
我个人担心后面运行出错,编译结束之后又修改回来了。
undefined reference to cv::imshow(cv::String const&, cv::_InputArray const&)
如果编译 opencv 之后只出现这个错误,而其他部分的 opencv 的 API 可以用,则可能是编译的
时候 CMAKE_BUILD_TYPE 选择成了 Realase/RelWithDebInfo。 imshow()
以及部分 API 可
能只有在 CMAKE_BUILD_TYPE == Debug 时编译的动态库才可以使用。 编译好的动态库是 *d.dll/*d.dll.a
Cmake 配置时勾选 build_opencv_world 出现问题
待续
以上是关于test的主要内容,如果未能解决你的问题,请参考以下文章