OpenCV 2.4.3+ с libstdC++ для iOS?
Я пытаюсь включить последнюю версию OpenCV в существующий проект iOS, и у меня возникают ошибки компоновщика, потому что мой проект XCode настроен на использование libstdC++, а не на поддержку libC++ / C++11.
Я видел несколько других людей, которые исправили свои ошибки, включив libC++. Примеры:
- Ошибки компоновщика после обновления Xcode до 4.5.2 и OpenCV до 2.4.3
- Как устранить ошибки iOS Link с помощью OpenCV
Однако мне НУЖНО использовать libstdC++, потому что у меня есть другие сторонние библиотеки, которые уже скомпилированы с более старой версией stdlib (не может быть изменена). Есть ли способ скомпилировать OpenCV 2.4.3+ без -stdlib=libC++? Существуют ли специальные флаги для передачи в CMake? или к сценарию build_framework.py, который находится в папке ios исходного кода OpenCV?
Или у кого-нибудь есть бинарная версия? Кажется, все загружаемые из OpenCV предполагают libC++ / C++11.
2 ответа
В источнике для 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")
Компиляция с использованием скрипта Python
ios/build_framework.py
Тогда тебе должно быть хорошо идти
Я только что попробовал это на источнике 2.4.3, поменялся местами в результирующей платформе существующего проекта, изменил стандартную библиотеку C++ для проекта на libstdC++, и он работает нормально.
Я также работаю над проектом с использованием OpenCV и сторонней библиотеки, которая требует libstdC++.
Поскольку я сам столкнулся с этой проблемой, я хотел поделиться тем, что сработало для меня.
Я смог заставить OpenCV работать, добавив "libC++. Dylib" в мой проект.
Этапы сборки -> "Связать двоичные файлы с библиотеками" -> "+" -> libC++. Dylib
Для справки я использую OpenCV 2.4.9 (opencv-2.4.9) с opencv.org. Я скомпилировал его, используя платформу ios build_framework.py в соответствии с инструкциями в документации OpenCV. Никаких изменений не требуется.