2013-07-16 5 views
3

Я нахожусь на mac 10.7.5, используя xcode 4.6.2 и работая с библиотекой OpenCV 2.4.3. Я прошел процесс создания каталога сборки с файлами cmake в терминале и выполнил загрузку.Библиотека не найдена OpenCV

Я добавил .dylib файлов в Xcode и изменил путь заголовка, изменена библиотека C++ для libstdC++, но когда я собирал я получил эту ошибку:

ld: library not found for -lopencv_calib3d.2.4.3 
clang: error: linker command failed with exit code 1 

У меня есть libopencv_calib3d.2.4.3.dylib добавляемые в проекте так у меня нет Идея, что еще нужно. Все идеи?

+0

У вас есть что-то вроде «пути библиотеки» в архитектуре, которую вы разрабатываете? http://stackoverflow.com/questions/9412296/ld-library-path-the-shared-lib-path-in-linux Подписывает ли ваш компилятор флаг -L для gcc/g ++? http://linux.die.net/man/1/g++ – Antonio

+0

Спасибо за ссылки. У меня есть мои Архитектуры как «Native Architecture of Build Machine», а мой компилятор - по умолчанию. Если я добавлю -L в другие флагов C++, то получаю ту же ошибку. -L не является вариантом под моей C++-библиотекой, но могу ли я добавить его и изменить компилятор по умолчанию? Извините, я новичок в этом. –

+0

Я не понимаю, но вам нужно использовать '-L directory_where_your_library_is' – Antonio

ответ

1

Если ваш «make back-end» - это Cmake, вы должны придерживаться его использования. Локальные изменения конфигурации в Xcode могут «тайно» перезаписываться при повторном запуске cmake (что, например, происходит после внесения в него изменений), создавая странные ошибки сборки и заставляя вас помнить все сделанные вручную изменения вручную.

Ваша проблема заключается в том, что сгенерированный проект, похоже, не знает, где искать opencv.

Предполагая, что вы установили OpenCV с помощью MacPorts вы должны добавить строку говоря

link_directories(/opt/local/lib) 

к вашему CMakeLists.txt. (Если он был установлен с помощью отвара или скомпилировано вручную просто заменить /opt/local/lib для /usr/local/lib или путь к скомпилированным библиотекам)

Кроме того, убедитесь, чтобы связать против opencv_calib3d вместо opencv_calib3d.2.4.3 (если у вас есть очень конкретная причина для обхода этого , но это обычно означает, что что-то еще странно в настройке :))

Заключительный указатель, о котором вы, возможно, уже знаете: поскольку вы уже используете Cmake, вы должны добавить библиотеки для ссылки на использование TARGET_LINK_LIBRARIES (...) в Cmake, а не вручную добавлять их в Xcode (ссылаясь на мой предыдущий аргумент).

+0

Я не думаю, что OP использует cmake для создания собственной программы. Он использовал только cmake для сборки OpenCV – Antonio

+0

, где я могу добавить ссылки_каталогов? Также, когда я добавляю файлы, он говорит calib3d, после того, как он добавлен, он говорит calib3d.2.4.3 –

+1

@AndreaF Извините, я неправильно понял вашу настройку. Как я понял, теперь вы не используете make для своего фактического проекта, поэтому большинство моих пунктов не применяются. Вместо этого взгляните на это решение: http://stackoverflow.com/questions/11726837/why-cant-i-compile-this-command-line-opencv-mac-application?rq=1 – kamjagin

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