2013-04-06 63 views
5

我想将最新版本的OpenCV包含到现有的iOS项目中,并且因为我的XCode项目设置为使用libstdC++而不是libC++/C++ 11支持,因此存在链接器错误。用于iOS的OpenCV 2.4.3+和libstdC++?

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

不过,我需要使用的libstdC++,因为我有一个已经与老STDLIB编译其他第三方库(不能改变)。如果没有-stdlib = libC++,有没有办法编译OpenCV 2.4.3+?是否有特殊的标志传递给CMake?或OpenCV源代码的ios文件夹中的build_framework.py脚本?

另外,没有人有二进制版本可用?似乎所有可从OpenCV下载的文件都假定为libC++/C++ 11。

回答

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源,换入现有项目产生的框架,改变了该项目的libstdC++和运行良好的C++标准库。

+0

是的!这是一个非常简单的解决方案。谢谢。 – mikewoz 2013-04-07 22:59:58

1

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

当我刚碰到这个问题时,我想分享一下对我有用的东西。


我能够通过在我的项目中添加“libC++。dylib”来获得OpenCV的工作。

构建阶段 - > “链接二进制与图书馆” - > “+” - >的libC++ dylib

仅供参考,我使用的OpenCV 2.4.9(OpenCV的-2.4.9)从opencv.org。我按照OpenCV文档中的说明使用ios平台build_framework.py编译它。不需要修改。