2013-04-06 5 views
5

Я пытаюсь включить недавнюю версию OpenCV в существующий проект iOS, и у меня возникают ошибки компоновщика, потому что в моем проекте XCode установлено использование libstdC++, а не поддержка libC++/C++ 11.OpenCV 2.4.3+ с libstdC++ для iOS?

Я видел несколько других людей, которые исправили свои ошибки, включив libC++. Примеры:

Однако, мне нужно использовать libstdC++, потому что у меня есть другие 3-библиотеками, которые уже скомпилированных со старой STDLIB (не может быть изменено). Есть ли способ скомпилировать OpenCV 2.4.3+ без -stdlib = libC++? Существуют ли специальные флаги для CMake? или скрипту build_framework.py, который входит в папку ios исходного кода OpenCV?

В качестве альтернативы, есть ли у любой доступная бинарная версия? Кажется, что все загружаемые из OpenCV предполагают libC++/C++ 11.

ответ

10

В источнике для OpenCV найти этот файл:

ios/cmake/Modules/Platform/iOS.cmake 

Изменить эту строку:

set (CMAKE_CXX_FLAGS "-stdlib=libc++ -headerpad_max_install_names -fvisibility=hidden -fvisibility-inlines-hidden") 

к:

set (CMAKE_CXX_FLAGS "-stdlib=libstdc++ -headerpad_max_install_names -fvisibility=hidden -fvisibility-inlines-hidden") 

Compile с помощью питона скрипт

ios/build_framework.py 

Тогда вы должны быть хорошо идти

Я только попробовал это на 2.4.3 источнике, местами в получаемом рамках на существующий проект, изменил стандартную библиотеку C++ для проекта по libstdC++ и работает нормально.

+0

Да! Это довольно простое решение. Благодарю. – mikewoz

1

Я также работаю над проектом с использованием OpenCV и сторонней библиотеки, которая требует libstdC++.

Как я сам столкнулся с этой проблемой, я хотел поделиться тем, что сработало для меня.


Я смог получить работу OpenCV, добавив в проект проект libC++. Dylib.

Строительные Phases -> "Ссылка Двоичный с библиотеками" -> "+" -> LibC++ dylib

Для справки, я использую OpenCV 2.4.9 (OpenCV-2.4.9) от opencv.org.. Я скомпилировал его с помощью платформы ios build_framework.py в соответствии с инструкциями в документах OpenCV. Никаких изменений не требуется.

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