5

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

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

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

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

4

2 回答 2

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++ 并且运行良好。

于 2013-04-07T01:01:25.823 回答
1

我还在使用 OpenCV 和需要 libstdc++ 的第 3 方库开展项目。

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


通过将“libc++.dylib”添加到我的项目中,我能够让 OpenCV 正常工作。

构建阶段->“将二进制文件与库链接”->“+”-> libc++.dylib

作为参考,我正在使用来自 opencv.org 的 OpenCV 2.4.9 (opencv-2.4.9)。我按照 OpenCV 文档中的说明使用 ios 平台 build_framework.py 编译了它。无需修改。

于 2014-04-27T13:06:10.327 回答