适用于iOS的libstdc ++ OpenCV 2.4.3+?

时间:2013-04-06 20:52:24

标签: c++ ios xcode opencv c++11

我正在尝试将最新版本的OpenCV包含到现有iOS项目中,并且因为我的XCode项目设置为使用libstdc ++而不是libc ++ / C ++ 11支持而导致链接器错误。

我见过其他几个通过启用libc ++修复错误的人。例子:

但是,我需要使用libstdc ++,因为我有其他第三方库已经使用较旧的stdlib编译(无法更改)。有没有办法在没有-stdlib = libc ++的情况下编译OpenCV 2.4.3+?是否有特殊标志传递给CMake?或者OpenCV源代码的ios文件夹中的build_framework.py脚本?

或者,是否有人可以使用二进制版本?似乎所有可从OpenCV下载的都假定为libc ++ / C ++ 11。

2 个答案:

答案 0 :(得分: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")

使用python脚本编译

ios/build_framework.py

然后你应该好好去

我刚刚在2.4.3源代码上尝试了这个,在现有项目中交换了生成的框架,将项目的C ++标准库更改为libstdc ++并且运行正常。

答案 1 :(得分:1)

我也在使用OpenCV和需要libstdc ++的第三方库进行项目。

我自己刚遇到这个问题,我想分享一下对我有用的东西。


通过在我的项目中添加“libc ++。dylib”,我能够使OpenCV工作。

构建阶段 - > “Link Binary with Libraries” - > “+” - >的libc ++。dylib

供参考,我正在使用opencv.org的OpenCV 2.4.9(opencv-2.4.9)。我根据OpenCV文档中的说明使用ios平台build_framework.py编译它。无需修改。