缺少所需的架构x86_64。

10

我有一个旧项目,为更新重新编译后,现在显示以下错误信息:

 …. missing required architecture x86_64 in file myLibrary.a ….

在搜索了missing required architecture x86_64 in file后,我尝试了网上找到的各种技巧,但都没有成功。有人知道如何正确处理这个问题吗?

我正在使用Xcode版本7.0.1。

正在运行:

lipo -info myLibrary.a

显示:

Architectures in the fat file: myLibrary.a are: armv7 arm64 

我已经成功添加了armv7s,但无法添加x86_64。


你是否包含了标准架构,包括64位(armv7,armv7s,arm64)? - Anbu.Karthik
1个回答

7
您正在尝试构建一个通用库,但它并没有所有的架构:armv7 armv7s i386 x86_64 arm64。当您使用 64 位架构构建时,编译器会报错。
要解决这个问题,请将以下内容添加到静态库项目的架构设置中:

enter image description here

这需要手动添加类似以下的架构内容:

enter image description here

使用以下架构在设备和模拟器上构建库,使用 lipo -create -output "myLibrary.a" ./Simulator/myLibrary.a ./Device/myLibrary.a 创建通用库,然后使用它。


谢谢。它至少在某个程度上起作用。 运行: lipo -info myLibrary.a 现在显示: fat文件中的架构:myLibrary.a是:i386 armv7 armv7s x86_64 arm64 但我现在收到此警告: ld: warning: object file (myLibrary.a(myLibrary.o)) was built for newer iOS version (7.0) than being linked (6.0). 这很有道理,但即使我将iOS部署目标从6.0更改为7.0,它仍然存在。我错过了什么? - Michel
听起来你的库被构建的最低iOS版本高于消费App所使用的iOS版本。在构建库时(包括在设备和模拟器上),将“最小部署目标”设置为“6.0”。 - Abhinav
我明白,但 OBJC_CLASS$_CIContext 和 OBJC_CLASS$_CIFilter 不是我的类。如果它们没有被编译器充分编译(我猜是苹果?) 那么我就不能做太多事情。或者我可能错过了某些要点。 - Michel
你必须在你的消费应用程序中链接 CoreImage.framemwork,并将其放置在你的目标的Build Phases --> Link Binary With Libraries 中。 - Abhinav
很高兴能帮到你... 干杯 :)! - Abhinav
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接