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:\Qt\Qt5.8.0\Tools\mingw530_32\bin

D:\Qt\Qt5.8.0\5.8\mingw53_32\bin

最好两个都加进去

  • 此时执行编译过程中使用的命令就是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 出现问题

待续

转载于:https://www.cnblogs.com/GhostRiderLi/p/10225918.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值