iphone - OpenCV.Framework 不为 armv7s 架构编译

标签 iphone ios opencv xcode4.5

我正在使用 openCV 框架开发一个 iPhone 应用程序。 一切正常。但是最近随着 iOS 6 和 XCode 4.5 的发布,我正在将我的项目迁移到 XCode 4.5 构建时我遇到了这个错误:

ld: file is universal (2 slices) but does not contain a(n) armv7s slice: /Users/jobs/iPhone_Client/workspace/MyProject/third-party/OpenCV.framework/OpenCV for architecture armv7s clang: error: linker command failed with exit code 1 (use -v to see invocation)

** BUILD FAILED **

The following build commands failed: Ld build/MyProject.build/Debug-iphoneos/MyProject.build/Objects-normal/armv7s/MyProject normal armv7s (1 failure)

据我了解,这是由于新的 armv7s 架构所致。 OpenCV 显然不是用 armv7s 编译的。

我该如何解决这个问题?

哪里可以找到兼容armv7s架构的新版框架?

如果没有可用的兼容框架,是否有办法获取源代码并创建我自己的针对新架构编译的库?也许有一些关于如何做到这一点的快速步骤?

注意: 请注意,我需要为 armv7s 而不是 armv7 构建。 谢谢

最佳答案

这个答案建立在 n9986 给出的答案之上。正如他所建议的,我克隆了在

找到的存储库

https://github.com/jonmarimba/OpenCV-iOS

当我下载它时,项目中对不同库的几个引用被破坏了,这很奇怪,但它们很容易修复。在修复它们之后,它的行为与 n9986 描述的完全一样,输出为 armv7 和 armv7s 编译的库。然而,出于我的目的,我要求将它们捆绑到一个 .framework 中,以便它们可以替代我一直使用的旧 .framework。

之前我下载了最新版本的 Opencv for ios here并花了很多时间尝试修改他们的 cmake 文件以编译支持 armv7s。 jonmarimba 已经重组了 xcode 项目文件以剥离其 cmake 依赖项,这使得更改目标架构更加直观。不幸的是,他没有构建与标准 openCV 构建一样多的库。我为 jonmarimba 的 opencv_world 项目添加了一个新目标,这是标准 openCV 版本中用于转换为框架的目标。构建完成后,我将其用作标准 openCV 版本生成的框架文件结构中静态库的替代品。

我创建的框架可以下载here .它非常适合我作为我以前的 opencv2.framework 的替代品。但是我确实注意到 jonmarimba 没有转换 opencv_videostab、opencv_stitching 或 opencv_nonfree 的目标。如果您使用这些库之一,我的框架可能不适合您。如果是这种情况,请告诉我,我可以尝试为您将它们设置为 xcode 项目中的目标。

更新

要针对其他架构进行编译,请将包含的 xcode 项目中的目标架构更改为您喜欢的 opencv_world 库的任何架构。建好后,去找刚才建好的库。将 opencv_world 库重命名为 opencv2,并将在 .framework 中找到的库文件替换为 opencv_world。

更新2

OpenCV 2.4.3现在默认使用 armv7s 支持进行编译,因此这些解决方案已过时。

关于iphone - OpenCV.Framework 不为 armv7s 架构编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12491046/

相关文章:

python-2.7 - 无法找到所有轮廓 - Opencv、python

iphone - cocoa touch : When does an NSFetchedResultsController become necessary to manage a Core Data fetch?

ios - (iOS MPMusicPlayerNotification) app在后台时如何接收通知

ios - 来自 nsmanagedObject 的 NSJSONSerialization 表示键不符合键值编码

ios - 哪个 UITextView 在 Swift 中启动 textViewDidChange?

ios - 当 table.width 远大于 view.width 时,UITableViewCell 分隔符插入不起作用

iphone - 在 PopOverController 的帮助下填充表 - Objective C

ios - 为什么日期格式化程序失败?

opencv - 如何计算亮度直方图?

opencv - OpenCV 中的对象检测示例