Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone OpenCV.Framework不针对armv7s体系结构进行编译_Iphone_Ios_Opencv_Xcode4.5 - Fatal编程技术网

Iphone OpenCV.Framework不针对armv7s体系结构进行编译

Iphone OpenCV.Framework不针对armv7s体系结构进行编译,iphone,ios,opencv,xcode4.5,Iphone,Ios,Opencv,Xcode4.5,我正在使用openCV框架开发一个iphone应用程序。 一切正常。然而,最近随着iOS 6和XCode 4.5的发布,我正在将我的项目迁移到XCode 4.5 在构建时,我遇到了以下错误: ld:文件是通用的(2个片),但不包含(n)个armv7s 切片: /用户/jobs/iPhone_客户端/workspace/MyProject/third-party/OpenCV.framework/OpenCV 对于体系结构armv7s clang:错误:链接器命令失败,退出 代码1(使用-v查看调

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

ld:文件是通用的(2个片),但不包含(n)个armv7s 切片: /用户/jobs/iPhone_客户端/workspace/MyProject/third-party/OpenCV.framework/OpenCV 对于体系结构armv7s clang:错误:链接器命令失败,退出 代码1(使用-v查看调用)

**构建失败**

以下生成命令失败: Ld build/MyProject.build/Debug-iphoneos/MyProject.build/Objects-normal/armv7s/MyProject 正常armv7s(1个故障)

据我所知,这是由于新的armv7s体系结构。 OpenCV显然不是用armv7s编译的

如何解决此问题

在哪里可以找到与armv7s体系结构兼容的新版本的框架

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

注意:只是要注意,我需要的是armv7s的构建,而不是armv7
谢谢

您可以始终不瞄准armv7,而只瞄准armv7。您的应用程序在iPhone5上仍然可以正常运行,只是无法针对新的指令集进行充分优化

显而易见,您需要重新编译和重建openCV.framework库,并将其用于armv7s


在重建之前调整库“项目设置”和“目标设置”。祝你好运

也许可以用CMake来构建它。一年前,我想为iOS构建一个医学图书馆,但遇到了一个问题。我可以用CMake来处理

也许这个链接可以作为一个开端


祝你好运

克隆opencv的Xcode项目,并根据自述文件更新opencv git子模块:

检查生成设置,确保iOS6和ARMV7存在。单击build。您现在应该拥有与armv7s兼容的.a文件。我刚试过这个:

$ file libopencv_core.a 
libopencv_core.a: Mach-O universal binary with 2 architectures
libopencv_core.a (for architecture armv7):  current ar archive random library
libopencv_core.a (for architecture cputype (12) cpusubtype (11)):   current ar archive random library
根据我目前的研究,最后一个条目是针对ARMV7的

编辑:最后一个条目确实是armv7s。我运行了Xcode自己的lipo info命令:

$ xcrun -sdk iphoneos lipo -info libopencv_core.a 
Architectures in the fat file: libopencv_core.a are: armv7 armv7s 

编译用于iOS的OpenCV库/框架时,将
-DCMAKE_OSX_ARCHITECTURES=“armv6;armv7;armv7s;i386”
传递给cmake。

此答案基于n9986给出的答案。正如他所建议的,我克隆了在

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

之前,我下载了最新版本的Opencv for ios,并花了相当多的时间试图修改他们的cmake文件,以便在支持ARMV7的情况下编译。jonmarimba已经重新构造了xcode项目文件,去掉了它的cmake依赖项,这使得更改目标体系结构更加直观。不幸的是,他没有像标准openCV构建一样构建那么多的库。我在jonmarimba的opencv_world项目中添加了一个新的目标,这是标准opencv版本中用于转换为框架的目标。一旦构建完成,我就使用它作为标准openCV版本生成的框架文件结构中静态库的替代品

我创建的框架可以下载。作为我以前的opencv2.framework的替代品,它非常适合我。但是我注意到jonmarimba没有转换opencv\u videostab、opencv\u stitching或opencv\u nonfree的目标。如果您使用其中一个库,我的框架可能无法为您工作。如果是这样,请让我知道,我可以尝试在xcode项目中为您设置这些目标

更新

要为其他体系结构进行编译,请将包含的xcode项目中的目标体系结构更改为opencv_世界库中您喜欢的任何内容。在你建立它之后,去找你刚刚建立的库。将opencv_world库重命名为opencv2,并将.framework中的库文件替换为opencv_world

更新2


现在,默认情况下使用armv7s支持编译,因此这些解决方案已经过时。

简单地说,我从中克隆了源代码并使用它构建


然后我得到了与armv7、armv7s和模拟器一起工作的opencv2.framewok。

我对旧版本的RestKit框架也有同样的问题。RestKit提供了一个新版本,只是需要对使用该框架的代码进行大量更改。当我发现一些东西时,我会让你知道。@Ken是的,在新架构问世之前,我一直在使用这个。我需要它为armv7s提供的链接是为armv7(没有s)提供的,我无法控制构建。它是一个在服务器上运行的自动构建脚本。我只能发送我的代码,然后它就会生成。脚本使用的是armv7s框架,最近有人修改了服务器的配置,并破坏了它。这是他们的责任来解决这个问题。我试图这么做,但是我在哪里可以找到openCV的XCode项目呢?它声明了这一点,但是它不适用于armv7s架构。与上述错误相同。您也可以在库中尝试此操作:查看此操作是否有效。这是一种成功构建的方法,但每个人都在报告这种方法的成功。@n9986很好的建议,我也发现了,但我还没能做到