OpenCV: «Неопределенные символы для архитектуры x86_64:» при попытке компиляции

#c #opencv

#c #opencv

Вопрос:

Среда: ОС: macOS, OpenCV: 2.4.12

Я только начал изучать OpenCV и записал код из книги, который,

 #include <opencv/highgui.h>

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

        cvReleaseImage(amp;img);
        cvDestroyWindow("Example1");
        return 0;
}
  

Когда я попытался скомпилировать этот код с помощью этой команды — gcc opencv1.c -o opencv1 , он показал ошибку со следующим сообщением.

 Undefined symbols for architecture x86_64:
  "_cvDestroyWindow", referenced from:
      _main in opencv1-78cabd.o
  "_cvLoadImage", referenced from:
      _main in opencv1-78cabd.o
  "_cvNamedWindow", referenced from:
      _main in opencv1-78cabd.o
  "_cvReleaseImage", referenced from:
      _main in opencv1-78cabd.o
  "_cvShowImage", referenced from:
      _main in opencv1-78cabd.o
  "_cvWaitKey", referenced from:
      _main in opencv1-78cabd.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
  

Кто-нибудь знает решение?

Ответ №1:

Вам необходимо включить OpenCV библиотеки при компиляции, pkg-config может помочь:

 gcc `pkg-config --cflags opencv` `pkg-config --libs opencv` opencv1.c -o opencv1
  

Комментарии:

1. Я просто перекомпилировал и получил другое сообщение. ld: library not found for -lippicv .

2. Попробуйте добавить опцию компилятора: -DINSTALL_CREATE_DISTRIB=ON в самом конце взгляните на github.com/opencv/opencv/issues/5852