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)
。