我正在将 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适用于 iOS 的 OpenCV。
参见:使用lipo在 OpenCV 上为每个架构(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/