每次我从CocoaPods导入文件时,我都会得到一个Apple Mach-O链接器错误。

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_FBSession", referenced from: someFile
ld: symbol(s) not found for architecture arm64

我有大约12个这样的耳机,用于我使用的各种pod。

我试图使用XCode 5为iPhone 5S构建。

我一直在尝试各种解决方案这里所以,但还没有得到任何工作。

我如何解决这个苹果Mach-O链接错误?


刚刚发现了另一个可能很有趣的警告,我希望这能让我找到解决方案:

Ignoring file ~/Library/Developer/Xcode/DerivedData/SomeApp/Build/Products/Debug-iphoneos/libPods.a, 

~/Library/Developer/Xcode/DerivedData/someApp/Build/Products/Debug-iphoneos/libPods.a


当前回答

转到目标构建设置。 为调试和发布设置BUILD ACTIVE ARCHITECTURE ONLY = NO 构建并运行

其他回答

你只需要从有效架构中删除arm64,并将NO设置为仅活动架构。现在只需要清洁、构建和运行。您将不会再次看到此错误。

:) KP

下面的方法让我在Xcode 5.1上对64位模拟器和retina iPad Mini进行GPUImage编译而没有错误,而不需要从Valid Architectures列表中删除arm64(这违背了拥有一个64位设备来测试64位性能的目的)。

从GitHub页面https://github.com/BradLarson/GPUImage下载。zip文件夹

解压缩,并导航到“框架”文件夹。从这里,添加并复制Source文件夹到你的Xcode项目中。确保勾选了“将项目复制到目标组的文件夹”,并且勾选了“为任何添加的文件夹创建组”。这将复制通用,iOS和Mac头文件/实现文件到你的项目。

如果你不需要Mac文件,因为你正在为iOS编译,你可以在复制文件到你的项目之前删除Mac文件夹,或者简单地从Xcode中删除组。

一旦你将Source文件夹添加到你的项目中,只需使用以下命令开始使用GPUImage的类/方法:

#import "Source/GPUImage.h" 

有几件事需要指出:

If you get an error saying 'Cocoa' not found, you've added the Mac folder/headers into your iOS project - simply delete the Mac group/files from your project and the warning will vanish If you rename the Source folder (not the group in Xcode), use that name instead of "Source/GPUImage.h" in the #import instruction. So if you rename the folder to GPUImageFiles before you add to your project, use: #import "GPUImageFiles/GPUImage.h Obviously ensure arm64 is selected in the Valid Architectures list to take advantage of the A7 64-bit processor! This isn't a GPUImage.framework bundle (such as if you downloaded the framework from http://www.raywenderlich.com/60968/ios-7-blur-effects-gpuimage) so it may not the correct way to use GPUImage that Brad Larson intended, but it works for my current SpriteKit project. There's no need to link to frameworks/libraries etc - just import the header and implementation source folder as described above

希望上面的内容能有所帮助——尽管这个问题被问了很多次,但似乎在任何地方都没有明确的说明,但不要害怕,GPUImage绝对适用于arm64架构!

问题是cocoapods还没有为arm64架构构建,因此当你构建它们时,它们不能链接。在更新并使用该体系结构之前,您可能无法使用这些包。您可以通过进入项目->目标(您的项目名称)->构建设置并将架构更改为标准架构(armv7, armv7s),并将有效架构更改为armv7, armv7s来修复链接器错误。

Note though, this means you won't get the full power of the 64 bit processor. You said you are building for the 5s, so there may be some reason you need this. If you for some reason absolutely need that power (perhaps you are building a game), and desperately need those files, you could submit a pull request and then recompile the project to arm64 by setting those same fields to arm64 in the files you pulled from the open source projects. But, unless you really need these files to be 64 bit compatible, that seems like a bit of overkill for now.

编辑:有些人还报告说,将为活动架构构建设置为YES也是解决这个问题的必要条件。

截至2014-04-28,设置应该是这样的:

转到目标构建设置。 为调试和发布设置BUILD ACTIVE ARCHITECTURE ONLY = NO 构建并运行

我通过设置来解决这个问题:

ARCHS = armv7 armv7s

VALID_ARCHS = armv6 armv7 armv7s arm64