【问题标题】:OpenCV - Why this build error?OpenCV - 为什么这个构建错误?
【发布时间】:2023-03-09 00:41:01
【问题描述】:

我从Learning OpenCV book 中输入了以下程序:

#include "highgui.h"

int main(int argc, char *argv[])
{
  IplImage *img = cvLoadImage(argv[1]);
  cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE);
  cvShowImage("Example1", img);
  cvWaitKey(0);
  cvReleaseImage(&img);
  cvDestroyWindow("Example1");
}

当我尝试使用 Eclipse CDT 构建它时,我得到以下信息(有什么想法吗?):

**** Build of configuration Debug for project OpenCV ****

**** Internal Builder is used for build               ****
g++ -IC:\OpenCV2.0\include\opencv -O0 -g3 -Wall -c -fmessage-length=0 -osrc\opencv.o ..\src\opencv.cpp
In file included from C:/OpenCV2.0/include/opencv/cxcore.hpp:2243,
                 from C:/OpenCV2.0/include/opencv/cxcore.h:2123,
                 from C:/OpenCV2.0/include/opencv/highgui.h:47,
                 from ..\src\opencv.cpp:1:
C:/OpenCV2.0/include/opencv/cxoperations.hpp: In member function `void cv::Ptr<_Tp>::addref()':
C:/OpenCV2.0/include/opencv/cxoperations.hpp:1442: error: there are no arguments to `__exchange_and_add' that depend on a template parameter, so a declaration of `__exchange_and_add' must be available
C:/OpenCV2.0/include/opencv/cxoperations.hpp:1442: error: (if you use `-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
C:/OpenCV2.0/include/opencv/cxoperations.hpp: In member function `void cv::Ptr<_Tp>::release()':
C:/OpenCV2.0/include/opencv/cxoperations.hpp:1446: error: there are no arguments to `__exchange_and_add' that depend on a template parameter, so a declaration of `__exchange_and_add' must be available
C:/OpenCV2.0/include/opencv/cxoperations.hpp: In member function `cv::Ptr<_Tp>& cv::Ptr<_Tp>::operator=(const cv::Ptr<_Tp>&)':
C:/OpenCV2.0/include/opencv/cxoperations.hpp:1473: error: there are no arguments to `__exchange_and_add' that depend on a template parameter, so a declaration of `__exchange_and_add' must be available
In file included from C:/OpenCV2.0/include/opencv/cxcore.hpp:2244,
                 from C:/OpenCV2.0/include/opencv/cxcore.h:2123,
                 from C:/OpenCV2.0/include/opencv/highgui.h:47,
                 from ..\src\opencv.cpp:1:
C:/OpenCV2.0/include/opencv/cxmat.hpp: In copy constructor `cv::Mat::Mat(const cv::Mat&)':
C:/OpenCV2.0/include/opencv/cxmat.hpp:102: error: `__exchange_and_add' was not declared in this scope
C:/OpenCV2.0/include/opencv/cxmat.hpp:102: warning: unused variable '__exchange_and_add'
C:/OpenCV2.0/include/opencv/cxmat.hpp: In constructor `cv::Mat::Mat(const cv::Mat&, const cv::Range&, const cv::Range&)':
C:/OpenCV2.0/include/opencv/cxmat.hpp:174: error: `__exchange_and_add' was not declared in this scope
C:/OpenCV2.0/include/opencv/cxmat.hpp:174: warning: unused variable '__exchange_and_add'
C:/OpenCV2.0/include/opencv/cxmat.hpp: In constructor `cv::Mat::Mat(const cv::Mat&, const cv::Rect&)':
C:/OpenCV2.0/include/opencv/cxmat.hpp:189: error: `__exchange_and_add' was not declared in this scope
C:/OpenCV2.0/include/opencv/cxmat.hpp:189: warning: unused variable '__exchange_and_add'
C:/OpenCV2.0/include/opencv/cxmat.hpp: In member function `cv::Mat& cv::Mat::operator=(const cv::Mat&)':
C:/OpenCV2.0/include/opencv/cxmat.hpp:239: error: `__exchange_and_add' was not declared in this scope
C:/OpenCV2.0/include/opencv/cxmat.hpp:239: warning: unused variable '__exchange_and_add'
C:/OpenCV2.0/include/opencv/cxmat.hpp: In member function `void cv::Mat::addref()':
C:/OpenCV2.0/include/opencv/cxmat.hpp:342: error: `__exchange_and_add' was not declared in this scope
C:/OpenCV2.0/include/opencv/cxmat.hpp:342: warning: unused variable '__exchange_and_add'
C:/OpenCV2.0/include/opencv/cxmat.hpp: In member function `void cv::Mat::release()':
C:/OpenCV2.0/include/opencv/cxmat.hpp:346: error: `__exchange_and_add' was not declared in this scope
C:/OpenCV2.0/include/opencv/cxmat.hpp:346: warning: unused variable '__exchange_and_add'
C:/OpenCV2.0/include/opencv/cxmat.hpp: In copy constructor `cv::MatND::MatND(const cv::MatND&)':
C:/OpenCV2.0/include/opencv/cxmat.hpp:3648: error: `__exchange_and_add' was not declared in this scope
C:/OpenCV2.0/include/opencv/cxmat.hpp:3648: warning: unused variable '__exchange_and_add'
C:/OpenCV2.0/include/opencv/cxmat.hpp: In member function `cv::MatND& cv::MatND::operator=(const cv::MatND&)':
C:/OpenCV2.0/include/opencv/cxmat.hpp:3677: error: `__exchange_and_add' was not declared in this scope
C:/OpenCV2.0/include/opencv/cxmat.hpp:3677: warning: unused variable '__exchange_and_add'
C:/OpenCV2.0/include/opencv/cxmat.hpp: In member function `void cv::MatND::addref()':
C:/OpenCV2.0/include/opencv/cxmat.hpp:3717: error: `__exchange_and_add' was not declared in this scope
C:/OpenCV2.0/include/opencv/cxmat.hpp:3717: warning: unused variable '__exchange_and_add'
C:/OpenCV2.0/include/opencv/cxmat.hpp: In member function `void cv::MatND::release()':
C:/OpenCV2.0/include/opencv/cxmat.hpp:3722: error: `__exchange_and_add' was not declared in this scope
C:/OpenCV2.0/include/opencv/cxmat.hpp:3722: warning: unused variable '__exchange_and_add'
C:/OpenCV2.0/include/opencv/cxmat.hpp: In member function `cv::SparseMat& cv::SparseMat::operator=(const cv::SparseMat&)':
C:/OpenCV2.0/include/opencv/cxmat.hpp:4081: error: `__exchange_and_add' was not declared in this scope
C:/OpenCV2.0/include/opencv/cxmat.hpp:4081: warning: unused variable '__exchange_and_add'
C:/OpenCV2.0/include/opencv/cxmat.hpp: In member function `void cv::SparseMat::addref()':
C:/OpenCV2.0/include/opencv/cxmat.hpp:4112: error: `__exchange_and_add' was not declared in this scope
C:/OpenCV2.0/include/opencv/cxmat.hpp:4112: warning: unused variable '__exchange_and_add'
C:/OpenCV2.0/include/opencv/cxmat.hpp: In member function `void cv::SparseMat::release()':
C:/OpenCV2.0/include/opencv/cxmat.hpp:4116: error: `__exchange_and_add' was not declared in this scope
C:/OpenCV2.0/include/opencv/cxmat.hpp:4116: warning: unused variable '__exchange_and_add'
Build error occurred, build is stopped
Time consumed: 28061  ms.  

谢谢。

【问题讨论】:

    标签: c++ eclipse opencv eclipse-cdt


    【解决方案1】:

    您可能正在使用比 OpenCV 设计器更新的编译器,因此它报告违反了模板规则。它还说,如果您使用 -fpermissive,它会变得不那么严格,并且会像以前的旧编译器一样。

    快速谷歌搜索还显示现在还有一个 OpenCV 2.1。也许那个效果更好?

    【讨论】:

    • 当前版本为OpenCV 2.2
    • 好的,所以我的谷歌搜索有点快。 :-) 如果我有最新的编译器,我会尝试那个版本。
    猜你喜欢
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多