У меня возникла проблема при попытке скомпилировать программу из этого руководства из официальной документации OpenCV 2.3. Я создал CMakeList.txt, как сказано в ссылке. Ну, это не сработало.
После хорошего поиска в Google и попытки исправить это, я добавил правильную библиотеку и включил папки в OpenCVConfig.make (в /opt/local/share/opencv здесь). Ну, это вывод, когда я пытаюсь это сделать:
$ cmake .
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/carlosagarie/dropbox/code/c++/opencv
$ make
Linking CXX executable teste
Undefined symbols for architecture x86_64:
"cv::_InputArray::_InputArray(cv::Mat const&)", referenced from:
_main in teste.cc.o
"cv::imshow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)", referenced from:
_main in teste.cc.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make[2]: *** [teste] Error 1
make[1]: *** [CMakeFiles/teste.dir/all] Error 2
make: *** [all] Error 2
Пытаясь выяснить, почему он сказал, что ld: символ(ы) не найден(ы) для архитектуры x86_64, я заглянул в папку с моими библиотеками (/opt/local/lib) и использовал команду файла:
libopencv_calib3d.2.2.0.dylib: Mach-O 64-bit dynamically linked shared library x86_64
То же самое для всех других библиотек. Так что, думаю, проблема не в них. Но почему ld не работает с ними? Я действительно не знаю, что делать.
Код такой же, как в учебнике, представленном ранее. Мой файл CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)
project( teste )
find_package( OpenCV REQUIRED )
add_executable( teste teste )
target_link_libraries( teste ${OpenCV_LIBS} )
Заранее спасибо!