我正在尝试将最新版本的 OpenCV 包含到现有的 iOS 项目中,但出现链接器错误,因为我的 XCode 项目设置为使用 libstdc++ 而不是 libc++/C++ 11 支持。
我见过其他几个人通过启用 libc++ 修复了他们的错误。示例:
- Linker errors after upgrading Xcode to 4.5.2 and OpenCV to 2.4.3
- How to resolve iOS Link errors with OpenCV
但是,我需要使用 libstdc++,因为我有其他第 3 方库,这些库已经使用较旧的 stdlib 编译(无法更改)。有没有办法在没有 -stdlib=libc++ 的情况下编译 OpenCV 2.4.3+?是否有特殊标志传递给 CMake?还是 OpenCV 源代码的 ios 文件夹中的 build_framework.py 脚本?
或者,有人有可用的二进制版本吗?似乎所有都可以从 OpenCV 下载,假设是 libc++/C++11。
最佳答案
在 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++,它运行良好。
关于c++ - 带有适用于 iOS 的 libstdc++ 的 OpenCV 2.4.3+?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15855894/