在 Eclipse 上使用 opencv 3.0 时出现链接错误

Posted

技术标签:

【中文标题】在 Eclipse 上使用 opencv 3.0 时出现链接错误【英文标题】:linking error while using opencv 3.0 on eclipse 【发布时间】:2015-08-02 06:40:07 【问题描述】:

我正在尝试在 Eclipse Luna 上的 ubuntu 14.04 下构建一个 opencv 3.0.0 视频项目。这是代码示例:

 #include <opencv2/opencv.hpp>
 #include <opencv2/highgui.hpp>
 #include <opencv2/videoio.hpp>

 using namespace cv;

 int main( int argc, char** argv )
 
  VideoCapture cap(0);

  Mat edges;
  namedWindow("edges", 1);
   while(1) 
      Mat frame;
      cap >> frame;
      cvtColor(frame, edges, CV_BGR2GRAY);
      GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
      Canny(edges, edges, 0, 30, 3);
      imshow("edges", edges);

   if(waitKey(30) >= 0)     break;
   
  return 0;
 

我收到以下错误:

undefined reference to symbol '_ZN2cv12GaussianBlurERKNS_11_InputArrayERKNS_12_OutputArrayENS_5Size_IiEEddi'
//usr/local/lib/libopencv_imgproc.so.3.0: error adding symbols: DSO missing from command line
 collect2: error: ld returned 1 exit status

其他过滤器也出现类似错误:

undefined reference to symbol '_ZN2cv8cvtColorERKNS_11_InputArrayERKNS_12_OutputArrayEii'

undefined reference to symbol '_ZN2cv5CannyERKNS_11_InputArrayERKNS_12_OutputArrayEddib'

我正在链接 (-l) 这些库:

opencv_core
opencv_videoio
opencv_imgcodecs
opencv_highgui
opencv_objdetect

有什么想法吗?

【问题讨论】:

您的错误 //usr/local/lib/libopencv_imgproc.so.3.0: 清楚地表明您缺少 opencv_imgproc。一个简单的谷歌搜索 error added symbols: DSO missing from command line 会告诉你应该使用 -l 添加所需的库。 【参考方案1】:

这些符号在 imgproc 库中。因此,您应该将 opencv_imgproc 添加到与 -l 链接的库列表中。

【讨论】:

以上是关于在 Eclipse 上使用 opencv 3.0 时出现链接错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 上运行的 Eclipse 上静态链接 OpenCV

如何在 Python 中使用 OpenCV 3.0 中的 HOG 功能训练 SVM 分类器?

OpenCV 3.0 正态贝叶斯分类器错误

Phonegap - 使用 Eclipse 升级到 3.0?

OpenCV 3.0 中是不是缺少 cv2.cv?

网络摄像头流使用 OpenCV 3.0 + Visual Studio 2013 进行镜像