为了账号安全,请及时绑定邮箱和手机立即绑定

Xcode构建失败“体系结构x86_64的未定义符号”

Xcode构建失败“体系结构x86_64的未定义符号”

PHP
达令说 2019-12-11 17:10:13
Xcode初学者的问题:这是我第一次使用Xcode 4.6.3。我正在尝试编写一个非常简单的控制台程序,该程序搜索配对的BT设备并将其打印到NSLog。生成时出现以下错误:Undefined symbols for architecture x86_64:  "_OBJC_CLASS_$_IOBluetoothDevice", referenced from:      objc-class-ref in main.old: symbol(s) not found for architecture x86_64clang: error: linker command failed with exit code 1 (use -v to see invocation)我疯狂地搜寻。常见的问题应该是对文件的引用,该文件仅导入了头文件,而链接器未找到任何实现(* .m文件)。但是,IOBluetooth库是类似于Foundation Framework的标准框架。我在上述声明中缺少什么?我也尝试过为32位计算机构建它(构建再次失败)。显然,这是一个链接器错误,但与它的关系不知道,除了在x86和x64体系结构上查找IOBluetoothDevice的实现存在问题之外,而头文件来自一个包含在标准中的Framework(称为IO蓝牙?供您参考,我的主要代码“ main.m”为:#import <Foundation/Foundation.h>#import <IOBluetooth/objc/IOBluetoothDevice.h>          // Note the import for bluetooth#import <IOBluetooth/objc/IOBluetoothDeviceInquiry.h>   // Note the import for bluetoothint main(int argc, const char * argv[]){    @autoreleasepool {        IOBluetoothDevice *currentDevice;        NSArray *devices = [ IOBluetoothDevice pairedDevices];        for (id currentDevice in devices){          NSLog(@"%i : %@",[ currentDevice classOfDevice ], [ currentDevice name ]);            }    }    return 0;}感谢您的帮助或指向正确方向的指示。
查看完整描述

3 回答

?
慕勒3428872

TA贡献1848条经验 获得超5个赞

UPD

苹果需要使用arm64架构。不要在项目中使用x32库

因此,下面的答案不再正确!


旧答案

新的Xcode 5.1将体系结构armv7,armv7s和arm64设置为默认值。

有时可能是由于此错误引起的“构建失败“体系结构x86_64的未定义符号”。因为,某些库(不是Apple的)最初是为x32编译的,不支持x64。

因此,您需要像这样更改项目目标的“架构”

注意 如果您使用的是Cocoapods,则应该对“ Pods”目标执行相同的操作。



查看完整回答
反对 回复 2019-12-12
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

架构x86_64的未定义符号:“ _ OBJC_CLASS _ $ _ xxx”,引用自:yyy.o中的objc-class-ref


这通常意味着您正在从类“ yyy”中调用“ xxx”(它可以是框架或类)。编译器无法找到“ xxx”,因此会发生此错误。


您需要通过在导航器窗口中右键单击项目文件夹并单击“ 将文件添加到“ YourProjectName ” “选项来添加丢失的文件(在本例中为“ xxx”)。


弹出窗口将在Finder中打开您的项目文件。在这里,您可以看到丢失的文件,然后将它们添加到您的项目中。不要忘记选中“ 如果需要复制项目 ”框。祝好运!!



查看完整回答
反对 回复 2019-12-12
  • 3 回答
  • 0 关注
  • 297 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信