Связывание программы OpenCV 2.3 в Mac OS X Lion: символы не найдены для архитектуры x86_64 - PullRequest
1 голос
/ 27 октября 2011

У меня проблема при попытке скомпилировать программу в этом руководстве из официальной документации OpenCV 2.3.Я создал CMakeList.txt, как сказано в ссылке.Ну, это не сработало.

После хорошего поиска в Google и попытки исправить это, я добавил правильную библиотеку lib и включил папки в 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) и использовала команду file:

libopencv_calib3d.2.2.0.dylib:    Mach-O 64-bit dynamically linked shared library x86_64

То же самое для всех остальных библиотек.Итак, я предполагаю, что это не проблема с ними.Но почему я не работаю с ними?Я действительно не знаю, что делать.

Код такой же, как в уроке, представленном ранее.Мой файл CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)
project( teste )
find_package( OpenCV REQUIRED )
add_executable( teste teste )
target_link_libraries( teste ${OpenCV_LIBS} )

Заранее спасибо!

1 Ответ

1 голос
/ 27 октября 2011

Я заметил, что вы следуете руководству по 2.3.x, но ошибка ссылки относится к 2.2.0. Какую версию вы используете?

Вы пытались скомпилировать его вручную?

С чем-то вроде этого:

Предполагается, что OPENCV_ROOT установлено в вашем месте установки (например, / opt / local)

g++ -I$OPENCV_ROOT/include -L$OPENCV_ROOT/lib -lopencv_core2.2.0 -lopencv_calib3d2.2.0 -c test.cpp

Если это не сработало, вы пытались запустить ldconfig от имени пользователя root? Является ли место установки для установки библиотек opencv в /etc/ld.so.conf (Если нет, вам нужно сделать first , прежде чем ldconfig сделает что-нибудь полезное)?

Отредактируйте свой ответ с обновлениями на эти вопросы. И я постараюсь помочь вам с остальными.

РЕДАКТИРОВАТЬ:
Вы также можете попробовать добавить это в ваш ~ / .profile и увидеть, что это исправляет:

export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib

Вы пытались следовать этому руководству , начиная с Раздела 2 с XCode?

...