【问题标题】:How to fix linker error when working with openCV?使用openCV时如何修复链接器错误?
【发布时间】:2015-05-28 11:06:46
【问题描述】:

我试图在我的 mac 上设置 openCV 并在 Eclipse 中使用 C++ 使用它。 但我认为链接器有问题。 我包括了这里描述的所有库:http://docs.opencv.org/doc/tutorials/introduction/linux_eclipse/linux_eclipse.html

我尝试了链接器命令 g++g++ -std=c++11,但总是得到相同的错误消息:

g++ -L/usr/local/lib -o camera src/Camera.o -lopencv_core -lopencv_ml -
lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_flann -lopencv_imgproc -lopencv_highgui 
Undefined symbols for architecture x86_64:
  "cv::imread(cv::String const&, int)", referenced from:
      _main in Camera.o
ld: symbol(s) not found for architecture x86_64

以下代码:

#include "/usr/local/include/opencv/cv.hpp"
#include "/usr/local/include/opencv2/highgui/highgui.hpp"
#include <iostream>

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{
  Mat image;
  image = imread( argv[1], 1 );

  if( argc != 2 || !image.data )
    {
      printf( "No image data \n" );
      return -1;
    }

  namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );
  imshow( "Display Image", image );

  waitKey(0);

  return 0;
}

【问题讨论】:

  • 如果是 opencv3.0,则需要 -lopencv_imgcodecs 用于 imread()。另外,请不要使用绝对路径,而是#include&lt;opencv2/opencv.hpp&gt;

标签: c++ opencv c++11 linker


【解决方案1】:

imread 已移至 opencv_imgcodecs 库中。

尝试将 -lopencv_imgcodecs 添加到您的链接器标志中。

【讨论】:

  • 谢谢,不知怎的,我错过了这个!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多