zoukankan      html  css  js  c++  java
  • gcc5+opencv4.0.1 "玄学"bug记录

    近期需要使用OpenCV中的gpu加速的一些函数,需要重新编译OpenCV库文件. 由于本机安装的cuda9.0对编译器gcc的版本有要求,平时常用的gcc7.0用不了,所以选用了gcc5.5 . OpenCV编译过程很顺利,但是在调用OpenCV的工程中却报了OpenCV源代码的错,很多函数,变量无法识别. 就下边这几行简单的代码,

     1 #include <opencv2/core.hpp>
     2 #include <opencv2/imgproc.hpp>
     3 #include <opencv2/highgui.hpp>
     4 
     5 int main(int argc, const char *argv[])
     6 {
     7 
     8     cv::Mat image = cv::imread("/home/Codes/StereoReconstruction_v2/build/out.jpg");
     9     cv::imshow("selected", image);
    10     cv::waitKey();
    11 }

    编译环境明明和刚刚编译opencv是一样的,而且更奇怪的是这个例程用gcc7可以顺利编译, 项目的其他依赖项限制了必须要用gcc5, 没办法,只有硬着头皮找原因.

    确定项目关于opencv的路径设置都正常,焦头烂额之际,发现报错的第一个源码文件不是opencv的,而是c++0x-warning.h 说需要编译器和库文件支持c++11,查了一下gcc5.5是支持c++11的,没毛病,可是为什么还会出错?

    想着老板安排的活又干不完了,旁边也没有可以请教的大神, 对着cmake gui我无助地快哭了. 转念又一想,可能gcc5.5没有默认支持c++11,而opencv 源码/头文件中有一些是c++11的特征,所以会识别不了.

    随即在cmake 的CXXflags项加上-std=c++11,编译通过!

    虽然经常写cmakelists,但是从来没有注意和编译器相关的一些配置选项,导致被这么个基础的问题困扰了两个多小时. 特在此记录以示警戒. 

    短短的第一篇博客纪念血泪满满的两小时, 20:05:15

    本文为原创,版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    给RArray和CArray加上自己的泛型算法(转)
    由电话号码得到姓名(转)
    在Eclipse中用TODO标签管理任务(转)
    Symbian_C++:Multipart/formdata(转)
    Symbian源代码还原之一,二,三,四,五(转)
    使用Carbide C++进行ODD(On Device Debugging)(转)
    S60_Platform_and_device_identification_codes(转)
    S60 3rd中怎么设置字体类型与字体大小!!!!!(转)
    诺基亚10.22变革影响的分析(转)
    MeeGo软件架构综述(转)
  • 原文地址:https://www.cnblogs.com/for-fun/p/11166203.html
Copyright © 2011-2022 走看看