2016-10-20 4 views
2

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

Я только начал изучать 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(&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) 

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

ответ

2

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

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

Я просто перекомпилировать и получил еще одно сообщение. 'ld: библиотека не найдена для -lippicv'. –

+0

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

+1

Теперь он работает. Спасибо за вашу помощь! –

Смежные вопросы