c++ - openCV 2.4.8 iOS 7.0 框架链接器错误

标签 c++ ios xcode opencv

我无法使用(最新的)openCV iOS 框架版本在 Xcode 5.0.2 中构建项目。我一直在尝试使用从 openCV sourceforge 页面下载的预构建框架。我按照 openCV 教程中的步骤将框架添加到 Xcode,我还尝试将 libc++.dylib 和/或 libstdc++.dylib 二进制文件添加到项目中。

我得到的错误是一个预处理/词法错误,说它找不到文件 <opencv2/opencv.hpp> 但在 Xcode 文件导航器中我确实可以看到它。如果我不 #include opencv.hpp当我尝试构建项目时,我遇到了大约 30 个链接器错误。关于如何让它工作的任何想法?我在这里看到了其他一些帖子,并且我尝试自己从源代码构建框架,但似乎没有什么能完全符合我的问题。

更新: 还要更清楚一点——我使用的是 Xcode 5.0.2,目标构建是适用于标准架构(armv7 和 armv7s)的 iOS 7.0。

C++ 编译器是 Apple LLVM 5.0,C++ 语言方言设置是“编译器默认值”,C++ 编译器设置是“libc++(支持 C++11 的 LLVM C++ 标准库)”

最佳答案

使用 opencv.org 上提供的预构建 iOS 框架很容易:

  1. 将 opencv2.framework 添加到您的项目中

    enter image description here

  2. 在你项目的前缀头文件(.pch)中添加

    #ifdef __cplusplus
        #import <opencv2/opencv.hpp>
    #endif
    

    这将在所有 C++ 源文件中导入 OpenCV 的 header

  3. 开始在任何 C++ 源文件中使用 OpenCV。

我猜您正试图在 .m 文件中使用 OpenCV,默认情况下这些文件是 Objective-C(而非 C++)文件。由于适用于 iOS 的 OpenCV 框架是用 C++ 编写的,因此您只能在 C++ 源文件中使用它。

将 Objectice-C++ 文件添加到 Xcode 的最简单方法是将源文件的扩展名设置为 .mm

或者(只是为了记录)您可以在“文件检查器”中将文件类型更改为 Objective-C++ Source

enter image description here

或在目标的构建阶段添加-x objective-c++编译器标志。

enter image description here

关于c++ - openCV 2.4.8 iOS 7.0 框架链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22153147/

相关文章:

ios - Xcode 无法在运行 iOS 13 的真实 iOS 设备上构建

ios - 为什么我的指示器在加载网页 View 时不起作用?

ios - 努力将 View Controller 推到UITabBarController

xcode - 使用多个 UIBezierPaths 绘制性能

ios - 防止 iOS 上的反射(objc/runtime)

C++ 循环 - 在 xcode 6.4 上获取错误 llbd

c++ - std::is_convertible 模板实现

c++ - C/C++ 的偏最小二乘法实现?

c++ - 点对点实际上如何在网络/端口方面工作?

ios - 如何从 AFNetworking 中的 POST 请求中读取一个简单的字符串(无 JSON)