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位兼容(?) 我还针对目标面板下的架构尝试了以下更改:
但这些变化都不起作用。请问有人对此有所了解吗? 谢谢
答案 0 :(得分:41)
显然,您的班级“格式”涉及问题。检查你对这个类的声明,特别是如果你在另一个类中做了它你可能忘记了@implementation或类似的东西。
答案 1 :(得分:39)
检查该文件是否包含在Build Phases中 - >编译来源
答案 2 :(得分:19)
确保WOExerciseListViewController是目标成员;这对我有用!
答案 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)
这个设置对我有用:
答案 12 :(得分:-3)
删除$(ARCHS_STANDARD)
并添加$(ARCHS_STANDARD_32_BIT)
。