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

mik*_*woz 5 c++ xcode opencv ios 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.

fou*_*dry 10

在openCV的源代码中找到此文件:

ios/cmake/Modules/Platform/iOS.cmake
Run Code Online (Sandbox Code Playgroud)

改变这一行:

set (CMAKE_CXX_FLAGS "-stdlib=libc++ -headerpad_max_install_names -fvisibility=hidden -fvisibility-inlines-hidden")
Run Code Online (Sandbox Code Playgroud)

至:

set (CMAKE_CXX_FLAGS "-stdlib=libstdc++ -headerpad_max_install_names -fvisibility=hidden -fvisibility-inlines-hidden")
Run Code Online (Sandbox Code Playgroud)

使用python脚本编译

ios/build_framework.py
Run Code Online (Sandbox Code Playgroud)

然后你应该好好去

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