2

我正在将 opencv2.framework 与我的项目集成。我做了以下步骤来完成。

  1. 将 opencv2.framework 添加到“链接框架和库”
  2. 将 libc++.dylib 添加到“链接框架和库”
  3. 在 AppName-Prefix.pch 文件中添加了以下代码

    #ifdef __cplusplus
    #import "opencv2/opencv.hpp"
    #endif

  4. 更改了 Apple LLVM 编译器 4.2 的编译器默认值 - 语言 -> C++ 语言方言 -> GNU++11 [-std=gnu++11] C++ 标准库 -> libc++(支持 C++ 11 的 LLVM C++ 标准库)

我仍然收到一个链接错误,它说

“opencv2.framework/opencv2(surf.o) ld:架构 armv7 的 21 个重复符号”

谁可以帮我这个事?

编辑:

我的 XCode 版本是 4.6,IOS SDK 是 6.1,部署目标是 4.3(我也用 5.0 测试过,但也不能在那个目标上工作)

4

1 回答 1

2

更新:修复此问题的github 拉取请求现已合并到 OpenCV。

原因: 在 OpenCV源代码中,有两个名为 1. surf.cpp 和 2. surf.ocl.cpp 的文件,这会为 opencv 框架库中的每个架构生成两个 surf.o 目标文件。

修复: 在 OpenCV 源代码中,应用来自 github pull request的补丁 并为 iOS构建OpenCV。

请参阅:在 OpenCV 上使用lipo为每个架构(armv7、armv7s 和 i386)提取单独的库,然后用于ar -tv查看两个大小相同且名称为 surf.o 的目标文件

我不知道: 只有一些 XCode 项目因预构建的 OpenCV 框架而失败。我使用 Xcode 5.0 和 OpenCV 2.4.6.1。这可以通过一些 XCode 构建设置来解决吗?

于 2013-10-29T11:52:28.290 回答