Xcode 6.1上的体系结构x86_64的未定义符号

时间:2014-10-25 06:32:08

标签: ios xcode cpu-architecture

Xcode突然在编译时把这个错误扔给了我:

Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_Format", referenced from:
 objc-class-ref in WOExerciseListViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

在做了一些研究之后,我可能会理解我正在使用的库与64位版本不兼容。但这很奇怪,因为我在相同的库中工作至少一周而没有一段时间内的编译问题。这两个库只是由一堆类组成的,当我从项目中删除它时,我遇到了同样的问题。由于我自己从未创建过库,所以我不知道如何找到我正在使用的库与64位兼容(?) 我还针对目标面板下的架构尝试了以下更改:

  • 将$(ARCHS_STANDARD_INCLUDING_64_BIT)添加到架构
  • 仅构建活动架构 - >设为'NO'
  • 代表'有效架构' - >设置为arm64,armv7和armv7s
  • 删除了DerivedData文件夹及其内容,清理并重新构建

但这些变化都不起作用。请问有人对此有所了解吗? 谢谢

13 个答案:

答案 0 :(得分:41)

显然,您的班级“格式”涉及问题。检查你对这个类的声明,特别是如果你在另一个类中做了它你可能忘记了@implementation或类似的东西。

答案 1 :(得分:39)

检查该文件是否包含在Build Phases中 - >编译来源

答案 2 :(得分:19)

确保WOExerciseListViewController是目标成员;这对我有用!

enter image description here

答案 3 :(得分:4)

是的,我认为您使用的库与64位版本不兼容,但您可以解决问题 -

只需导航到Build Settings> Architectures&将$(ARCHS_STANDARD)替换为$(ARCHS_STANDARD_32_BIT)

这样你的xcode就会用32位支持的版本构建你的项目。

答案 4 :(得分:4)

当我在Xcode 6.4中打开一个在Xcode 4~ish中创建的(相当)旧项目时,我发现了这个错误。虽然链接的框架在项目侧栏中可见,但我忽略了目标构建阶段选项卡中没有链接库。一旦我修复了它,它编译得很好。

答案 5 :(得分:2)

原来我忘了写@implementation部分。

答案 6 :(得分:2)

我根本没有链接“Link Binary with Libraries”部分中的库。

答案 7 :(得分:1)

我通过转到Xcode Build Settings和在Architectures中解决了同样的问题,我改变了 Xcode 6.1.1标准架构: -

$(ARCHS_STANDARD_32_BIT)

答案 8 :(得分:0)

当我复制/粘贴一个类并忘记在.m文件中重命名时出现相同的错误。

答案 9 :(得分:0)

我通过删除对文件的引用并在项目中再次添加它来解决了这个问题。就我而言,它有效。

答案 10 :(得分:0)

我刚刚遇到完全相同的错误,并通过重新启动xcode解决了这个问题。

对我来说,问题发生在svn更新之后,有问题的文件被添加到projects文件夹中,但它从未出现在xcode(9.3.1)中 - 直到我重新启动它。

答案 11 :(得分:-2)

这个设置对我有用:

  • 架构= $(ARCHS_STANDARD_32_BIT)
  • 仅构建活动架构:是
  • 有效架构armv6 armv7 armv7s arm64

答案 12 :(得分:-3)

删除$(ARCHS_STANDARD)并添加$(ARCHS_STANDARD_32_BIT)

enter image description here