码迷,mamicode.com
首页 > 其他好文 > 详细

test

时间:2019-01-05 20:35:48      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:调试   define   str   需要   函数   http   遇到的问题   电脑   fscanf   

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 出现问题

待续

test

标签:调试   define   str   需要   函数   http   遇到的问题   电脑   fscanf   

原文地址:https://www.cnblogs.com/GhostRiderLi/p/10225918.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!