Как устранить ошибки iOS Link с помощью OpenCV
Я пытаюсь добавить новейшую версию openCV в свой проект iOS, но при компиляции я получаю около 30 ошибок ссылок:
Пример:
Undefined symbols for architecture i386:
"cv::merge(std::vector<cv::Mat, std::allocator<cv::Mat> > const&, cv::_OutputArray const&)", referenced from:
Я добавил фреймворк OpenCV вместе со всеми остальными необходимыми фреймворками в фиктивное приложение с простым захватом видео (следуя инструкции по ссылке), и оно работало отлично.
Я не уверен, почему это могло бы работать так гладко в одном месте, но не в другом. Я думал только о том, что я компилирую для разных архитектур между двумя приложениями, но думаю, что для обоих я нацелен на armv7 и armv7s.
Любая идея о том, что может быть причиной ошибок ссылки?
1 ответ
Проверьте это: (при условии, что вы используете компилятор LLVM)
Цель> Настройки сборки> Apple LLVM Compiler 4.1 - язык> Стандартная библиотека C++
попробуйте выбрать
libstdc++ (GNU C++ standard library)`
затем попробуйте переключиться на
libc++ (LLVM C++ standard library with C++11 support)
libstdC++, кажется, работает для более старых сборок openCV, libC++ подходит для более новых сборок. Если он установлен неправильно (в любом случае), вы увидите ошибки такого рода.
Если это не причина, откройте настройки сборки рядом в каждом проекте и проверьте каждую настройку...
Недавно я боролся с этим - посмотрите мой вопрос здесь, ответы здесь и пример github здесь. Проект github включает в себя среду opencv, скомпилированную из текущего источника несколько дней назад. Прямо сейчас я собираю многоцелевой пример, который связывается с другой версией фреймворка, если компилируется в 10.6/XCode4.2 или 10.7/XCode4.4+. [На GitHub здесь]
Обновить
По просьбе @mikewoz вам может потребоваться запустить текущий openCV с libstdc++
оставаться совместимым с другими структурами. Можно сделать текущую сборку с libstdc++
совместимость. Подробнее см. Мой ответ на вопрос Майка здесь: