【问题标题】:opencv2.framework/opencv2(surf.o) duplicate symbols for architecture armv7opencv2.framework/opencv2(surf.o) 架构 armv7 的重复符号
【发布时间】:2013-05-05 03:15:20
【问题描述】:

我正在将 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 测试过,但也不能在那个目标上工作)

【问题讨论】:

    标签: ios xcode opencv image-processing uiimage


    【解决方案1】:

    更新: 修复此问题的 github pull request 现在已合并到 OpenCV。

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

    修复: 在 OpenCV 源代码中,从 github pull request 应用补丁 和 Build 适用于 iOS 的 OpenCV。

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

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

    【讨论】:

    • @Kiran.. 谢谢你的回答。我认为有一些 XCode 构建设置或其他东西可以解决这个问题。我解决了这个问题,但现在不记得了。该帖子是 5 个月前添加的。 :)
    猜你喜欢
    • 2013-05-01
    • 2015-11-02
    • 1970-01-01
    • 2016-02-12
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多