OpenCV编译错误:/usr/include/c++/5/bits/stl_algobase.h:604:58: ...

环境:Ubuntu16.04
工具:Eclipse + cdt
opencv 4.0.0

错误描述

编写好的正常代码,在Build Project过程中出现类似于“标准库”错误:

/usr/local/opencv4/include/opencv4/opencv2/stitching/detail/seam_finders.hpp:250:29: error: field ‘impl_’ has incomplete type ‘cv::Ptr<cv::detail::PairwiseSeamFinder>’
     Ptr<PairwiseSeamFinder> impl_;
                             ^
In file included from /usr/local/opencv4/include/opencv4/opencv2/core/cvstd.hpp:81:0,
                 from /usr/local/opencv4/include/opencv4/opencv2/core/base.hpp:58,
                 from /usr/local/opencv4/include/opencv4/opencv2/core.hpp:54,
                 from /usr/local/opencv4/include/opencv4/opencv2/opencv.hpp:52,
                 from ../src/testcv.cpp:1:
/usr/local/opencv4/include/opencv4/opencv2/core/cvstd_wrapper.hpp:66:8: note: declaration of ‘struct cv::Ptr<cv::detail::PairwiseSeamFinder>’
 struct Ptr : public std::shared_ptr<T>
        ^
In file included from /usr/local/opencv4/include/opencv4/opencv2/stitching.hpp:53:0,
                 from /usr/local/opencv4/include/opencv4/opencv2/opencv.hpp:89,
                 from ../src/testcv.cpp:1:
/usr/local/opencv4/include/opencv4/opencv2/stitching/detail/blenders.hpp:108:30: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
     void prepare(Rect dst_roi) CV_OVERRIDE;
                              ^
/usr/local/opencv4/include/opencv4/opencv2/stitching/detail/blenders.hpp:109:56: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
     void feed(InputArray img, InputArray mask, Point tl) CV_OVERRIDE;
                                                        ^
/usr/local/opencv4/include/opencv4/opencv2/stitching/detail/blenders.hpp:110:63: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
     void blend(InputOutputArray dst, InputOutputArray dst_mask) CV_OVERRIDE;
                                                               ^
/usr/local/opencv4/include/opencv4/opencv2/stitching/detail/blenders.hpp:135:30: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
     void prepare(Rect dst_roi) CV_OVERRIDE;
                              ^
/usr/local/opencv4/include/opencv4/opencv2/stitching/detail/blenders.hpp:136:56: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
     void feed(InputArray img, InputArray mask, Point tl) CV_OVERRIDE;
                                                        ^
/usr/local/opencv4/include/opencv4/opencv2/stitching/detail/blenders.hpp:137:63: warning: override controls (override/final) only available with -std=c++11 or -std=gnu++11
     void blend(InputOutputArray dst, InputOutputArray dst_mask) CV_OVERRIDE;
                                                               ^
In file included from /usr/local/opencv4/include/opencv4/opencv2/opencv.hpp:89:0,
                 from ../src/testcv.cpp:1:
/usr/local/opencv4/include/opencv4/opencv2/stitching.hpp:145:12: error: ‘constexpr’ does not name a type
     static constexpr const double ORIG_RESOL = -1.0;
            ^
/usr/local/opencv4/include/opencv4/opencv2/stitching.hpp:145:12: note: C++11 ‘constexpr’ only available with -std=c++11 or -std=gnu++11
/usr/local/opencv4/include/opencv4/opencv2/stitching.hpp:292:20: error: field ‘features_finder_’ has incomplete type ‘cv::Ptr<cv::Feature2D>’
     Ptr<Feature2D> features_finder_;
                    ^
In file included from /usr/local/opencv4/include/opencv4/opencv2/core/cvstd.hpp:81:0,
                 from /usr/local/opencv4/include/opencv4/opencv2/core/base.hpp:58,
                 from /usr/local/opencv4/include/opencv4/opencv2/core.hpp:54,
                 from /usr/local/opencv4/include/opencv4/opencv2/opencv.hpp:52,
                 from ../src/testcv.cpp:1:
/usr/local/opencv4/include/opencv4/opencv2/core/cvstd_wrapper.hpp:66:8: note: declaration of ‘struct cv::Ptr<cv::Feature2D>’
 struct Ptr : public std::shared_ptr<T>
        ^
In file included from /usr/local/opencv4/include/opencv4/opencv2/opencv.hpp:89:0,
                 from ../src/testcv.cpp:1:
/usr/local/opencv4/include/opencv4/opencv2/stitching.hpp:293:34: error: field ‘features_matcher_’ has incomplete type ‘cv::Ptr<cv::detail::FeaturesMatcher>’
     Ptr<detail::FeaturesMatcher> features_matcher_;
                                  ^
In file included from /usr/local/opencv4/include/opencv4/opencv2/core/cvstd.hpp:81:0,
                 from /usr/local/opencv4/include/opencv4/opencv2/core/base.hpp:58,
                 from /usr/local/opencv4/include/opencv4/opencv2/core.hpp:54,
                 from /usr/local/opencv4/include/opencv4/opencv2/opencv.hpp:52,
                 from ../src/testcv.cpp:1:
/usr/local/opencv4/include/opencv4/opencv2/core/cvstd_wrapper.hpp:66:8: note: declaration of ‘struct cv::Ptr<cv::detail::FeaturesMatcher>’
 struct Ptr : public std::shared_ptr<T>
        ^
In file included from /usr/local/opencv4/include/opencv4/opencv2/opencv.hpp:89:0,
                 from ../src/testcv.cpp:1:
/usr/local/opencv4/include/opencv4/opencv2/stitching.hpp:295:37: error: field ‘bundle_adjuster_’ has incomplete type ‘cv::Ptr<cv::detail::BundleAdjusterBase>’
     Ptr<detail::BundleAdjusterBase> bundle_adjuster_;
                                     ^
In file included from /usr/local/opencv4/include/opencv4/opencv2/core/cvstd.hpp:81:0,
                 from /usr/local/opencv4/include/opencv4/opencv2/core/base.hpp:58,
                 from /usr/local/opencv4/include/opencv4/opencv2/core.hpp:54,
                 from /usr/local/opencv4/include/opencv4/opencv2/opencv.hpp:52,
                 from ../src/testcv.cpp:1:
/usr/local/opencv4/include/opencv4/opencv2/core/cvstd_wrapper.hpp:66:8: note: declaration of ‘struct cv::Ptr<cv::detail::BundleAdjusterBase>’
 struct Ptr : public std::shared_ptr<T>
        ^
In file included from /usr/local/opencv4/include/opencv4/opencv2/opencv.hpp:89:0,
                 from ../src/testcv.cpp:1:
/usr/local/opencv4/include/opencv4/opencv2/stitching.hpp:296:28: error: field ‘estimator_’ has incomplete type ‘cv::Ptr<cv::detail::Estimator>’
     Ptr<detail::Estimator> estimator_;
                            ^
In file included from /usr/local/opencv4/include/opencv4/opencv2/core/cvstd.hpp:81:0,
                 from /usr/local/opencv4/include/opencv4/opencv2/core/base.hpp:58,
                 from /usr/local/opencv4/include/opencv4/opencv2/core.hpp:54,
                 from /usr/local/opencv4/include/opencv4/opencv2/opencv.hpp:52,
                 from ../src/testcv.cpp:1:
/usr/local/opencv4/include/opencv4/opencv2/core/cvstd_wrapper.hpp:66:8: note: declaration of ‘struct cv::Ptr<cv::detail::Estimator>’
 struct Ptr : public std::shared_ptr<T>
        ^
In file included from /usr/local/opencv4/include/opencv4/opencv2/opencv.hpp:89:0,
                 from ../src/testcv.cpp:1:
/usr/local/opencv4/include/opencv4/opencv2/stitching.hpp:299:24: error: field ‘warper_’ has incomplete type ‘cv::Ptr<cv::WarperCreator>’
     Ptr<WarperCreator> warper_;
                        ^
In file included from /usr/local/opencv4/include/opencv4/opencv2/core/cvstd.hpp:81:0,
                 from /usr/local/opencv4/include/opencv4/opencv2/core/base.hpp:58,
                 from /usr/local/opencv4/include/opencv4/opencv2/core.hpp:54,
                 from /usr/local/opencv4/include/opencv4/opencv2/opencv.hpp:52,
                 from ../src/testcv.cpp:1:
/usr/local/opencv4/include/opencv4/opencv2/core/cvstd_wrapper.hpp:66:8: note: declaration of ‘struct cv::Ptr<cv::WarperCreator>’
 struct Ptr : public std::shared_ptr<T>
        ^
In file included from /usr/local/opencv4/include/opencv4/opencv2/opencv.hpp:89:0,
                 from ../src/testcv.cpp:1:
/usr/local/opencv4/include/opencv4/opencv2/stitching.hpp:300:38: error: field ‘exposure_comp_’ has incomplete type ‘cv::Ptr<cv::detail::ExposureCompensator>’
     Ptr<detail::ExposureCompensator> exposure_comp_;
                                      ^
In file included from /usr/local/opencv4/include/opencv4/opencv2/core/cvstd.hpp:81:0,
                 from /usr/local/opencv4/include/opencv4/opencv2/core/base.hpp:58,
                 from /usr/local/opencv4/include/opencv4/opencv2/core.hpp:54,
                 from /usr/local/opencv4/include/opencv4/opencv2/opencv.hpp:52,
                 from ../src/testcv.cpp:1:
                   ^
...

In file included from /usr/local/opencv4/include/opencv4/opencv2/core.hpp:58:0,
                 from /usr/local/opencv4/include/opencv4/opencv2/opencv.hpp:52,
                 from ../src/testcv.cpp:1:
/usr/local/opencv4/include/opencv4/opencv2/core/types.hpp:1852:13: note: candidate: cv::Rect_<_Tp>& cv::Rect_<_Tp>::operator=(const cv::Rect_<_Tp>&) [with _Tp = int]
 Rect_<_Tp>& Rect_<_Tp>::operator = ( const Rect_<_Tp>& r )
             ^
/usr/local/opencv4/include/opencv4/opencv2/core/types.hpp:1862:13: note: candidate: cv::Rect_<_Tp>& cv::Rect_<_Tp>::operator=(cv::Rect_<_Tp>) [with _Tp = int]
 Rect_<_Tp>& Rect_<_Tp>::operator = ( Rect_<_Tp>&& r ) CV_NOEXCEPT
             ^
make: *** [src/testcv.o] Error 1

16:32:01 Build Finished (took 1s.585ms)

原因分析

Opencv 4.0需要C++11特性支持,所以必须对项目设置:

之后即可正常编译。

补充:如果正常gcc命令行编译出现相同错误,应使用:
g++ -c -std=c++11 -I/usr/loca/opencv4/include/opencv4 xxx.cpp
这里opencv的include路径根据各自环境调整。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值