Xcode 6.1上架构x86_64的未定义符号

在编译的时候,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位版本不兼容。 但是,这是非常奇怪的,因为在那段时间里,我一直在使用相同的库至less一个星期,而没有一个编译问题。 这两个库只是由一堆类组成,当我从项目中删除它们时,我得到了同样的问题。 由于我自己从来没有创build库,我不知道我怎么能find我正在使用的与64位(?)兼容我还尝试了下面的目标面板架构的变化:

  • 将$(ARCHS_STANDARD_INCLUDING_64_BIT)添加到架构
  • 仅build立活动架构 – >设置为“否”
  • 对于“有效的体系结构” – >设置为arm64,armv7和armv7s
  • 删除DerivedData文件夹及其内容,再次清理并构build

但是,这些变化都不起作用。 请,有人有这个线索吗? 谢谢

显然你的class级“格式”涉及到这个问题。 检查你的这个类的声明,特别是如果你在其他类中做了这个,你可能会忘记@implementation或者类似的东西。

检查该文件是否包含在构build阶段 – >编译源中

确保WOExerciseListViewController是一个目标成员; 为我工作!

在这里输入图像说明

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

只需导航到“构build设置”>“体系结构”并将$(ARCHS_STANDARD)replace为$(ARCHS_STANDARD_32_BIT)

所以你的xcode用32位的支持版本来构build你的项目。

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

我只是没有链接“链接二进制文件库”部分中的库。

我通过转到Xcode Build Settings和体系结构解决了同样的问题,我将Xcode 6.1.1标准体系结构更改为:

$(ARCHS_STANDARD_32_BIT)

原来,我忘了写我的@implementation部分。

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

我通过删除对该文件的引用并在项目中再次添加它来解决问题。 在我的情况下,它的作品。

这个设置为我工作:

  • 架构= $(ARCHS_STANDARD_32_BIT)
  • 仅构build主动架构:是
  • 有效的体系结构armv6 armv7 armv7s arm64

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

在这里输入图像说明