OpenCV 2.4.3+与iOS的libstdc + +?
我想包括一个最新版本的OpenCV到一个现有的iOS项目,并有链接器错误,因为我的XCode项目设置为使用libstdc ++而不是libc ++ / C ++ 11支持。
我见过其他几个通过启用libc ++修复错误的人。 例子:
- 将Xcode升级到4.5.2和将OpenCV升级到2.4.3之后的链接器错误
- 如何解决与OpenCV的iOS链接错误
但是,我需要使用libstdc ++,因为我有其他第三方库已经与旧的stdlib编译(不能更改)。 有没有一种方法来编译OpenCV 2.4.3 +没有-stdlib = libc ++? 是否有特殊的标志传递给CMake? 或OpenCV源代码的ios文件夹中的build_framework.py脚本?
或者,有没有人有二进制版本可用? 似乎所有可从OpenCV下载的文件都假定为libc ++ / C ++ 11。
在openCV的源代码中find这个文件:
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 ++的第三方库进行项目。
当我自己遇到这个问题时,我想分享一下对我有用的东西。
我能够通过在我的项目中添加“libc ++。dylib”来获得OpenCV的工作。
build立阶段 – >“链接二进制文件库” – >“+” – > libc ++。dylib
作为参考,我使用opencv.org的OpenCV 2.4.9(opencv-2.4.9)。 我按照OpenCV文档中的说明使用ios平台build_framework.py编译它。 不需要修改。