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

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

    #ifdef __cplusplus
    #import“opencv2 / opencv.hpp”
    #endif
  • 更改了默认的编译器
    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进行了测试,但也不能在该目标中工作)

    最佳答案

    更新:修复此问题的 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)提取单独的库,然后使用ar -tv查看名称为surf.o的两个大小相同的目标文件。

    我不知道:只有某些XCode项目因预建的OpenCV框架而失败。我将Xcode 5.0与OpenCV 2.4.6.1一起使用。可以使用某些XCode构 build 置来解决此问题吗?

    关于ios - opencv2.framework/opencv2(surf.o)体系结构armv7的重复符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16482218/

    10-12 01:20