opencv2.framework / opencv2(surf.o)为架构armv7复制符号

时间:2013-05-10 12:24:47

标签: ios xcode opencv image-processing uiimage

我正在将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 ++标准库)

  5. 我仍然收到链接错误

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

    有人可以帮我吗?

    修改

    我的XCode版本是4.6,IOS SDK是6.1,部署目标是4.3(我也测试了5.0,但也没有在该目标中工作)

1 个答案:

答案 0 :(得分:2)

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

<强>原因: 在OpenCV source中,有两个名为1. surf.cpp和2. surf.ocl.cpp的文件,它们为opencv框架库中的每个体系结构生成两个surf.o目标文件。

<强>修正:  在OpenCV源代码中,从github pull request应用补丁 和Build OpenCV for iOS。

请参阅:在OpenCV上使用lipo为每个体系结构(armv7,armv7s和i386)提取单独的lib,然后使用ar -tv查看两个相同大小的目标文件名字是surf.o

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