每次我从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


当前回答

调用pod update,然后从pod文件中删除pod 'ARCore',并再次调用pod install。然后将pod 'ARCore'添加到pod文件中,并再次调用pod install

其他回答

这个链接错误消息表明定义它的源文件没有被标记为应用程序目标的一部分。找到源文件,并使用右边的file属性检查器来检查应用程序目标的目标成员条目。

解决方案: 选择文件-> openFile Inspector ->参见目标成员->检查如果未选中目标您的运行目标

在我使用dlib在IOS的情况下,我需要删除“继承”从构建设置/预处理器宏。

问题是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,设置应该是这样的:

我的问题是,我已经有一些Facebook sdk在我的项目(FBSDKLoginKit和FBSDKCoreKit)。

我只需要一个SDK (FBSDKShareKit)并导入它,从而给出了“未定义的arm64符号架构”。

由于FBSDKShareKit依赖于更新版本的FBSDKCoreKit,通过更新其他框架,一切都重新工作了。

当morisunshine的回答指向正确的方向时,他的回答中的一个小调整解决了我的iOS8.2问题。

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

ARCHS = armv7

VALID_ARCHS = armv6 armv7 armv7s arm64

BUILD ACTIVE ARCHITECTURE ONLY= NO