OpenCV 2.4.3+ with libstdc++ for iOS?

OpenCV 2.4.3+ with libstdc++ for iOS?

本文关键字:for iOS libstdc++ with OpenCV      更新时间:2023-10-16

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

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

  • Xcode升级到4.5.2和OpenCV升级到2.4.3后的链接错误
  • 如何解决iOS链接错误与OpenCV

然而,我需要使用libstdc++,因为我有其他第三方库已经用旧的stdlib编译(不能更改)。有没有一种方法来编译OpenCV 2.4.3+没有-stdlib=libc++ ?是否有特殊的标志传递给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++,它运行得很好。

我也在做一个使用OpenCV和第三方库的项目,需要libstdc++。

因为我自己也遇到了这个问题,我想分享一下对我有用的方法。


我能够通过添加"libc++"来获得OpenCV工作。为我的项目干杯。

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

作为参考,我使用OpenCV 2.4.9 (OpenCV -2.4.9)从opencv.org。我根据OpenCV文档中的说明使用ios平台build_framework.py编译了它。