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编译它。 不需要修改。