一个Xcode初学者的问题:

这是我第一次使用Xcode 4.6.3。

我试图写一个非常简单的控制台程序,搜索配对的BT设备,并将它们打印到NSLog。

它会生成以下错误:

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

我疯狂地搜索。常见的问题应该是对文件的引用,其中只有头文件被导入,链接器没有找到任何实现(*.m-file)。IOBluetooth库是一个标准框架,就像基础框架一样。

我在上面的陈述中遗漏了什么?

我还尝试为32位机器构建它(构建再次失败)。这显然是一个链接器错误,但我不知道,它与什么有关,除了有一个问题,找到IOBluetoothDevice的实现,在x86和x64架构上,而头文件是从一个标准包含的框架,称为IOBluetooth?

供你参考,我的主要代码是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 bluetooth


int 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;
}

谢谢你的任何帮助或指点正确的方向。


当前回答

我也遇到过同样的问题,以上的方法都行不通。我不小心删除了下面目录下的文件。

Or

~ /图书馆/开发/ Xcode / DerivedData /

其他回答

我知道这是一个老问题,但今天得到了同样的错误,上述解决方案都无效。

通过设置选项来修复它:

Project -> Architecture -> Build Active Architecture Only

为Yes

正确地编译和构建项目

这也发生在苹果M1芯片上。

这是我的解决方案,使用罗塞塔检查打开 步骤:

转到应用程序>右击xcode >获取信息>检查使用Rosetta打开 重新启动系统。

我也犯了同样的错误,因为我没有删除文件,而是删除了对该文件的引用。在Finder中定位文件并删除它会有所帮助。

在我的情况下,删除选择的目标成员,然后再次选择修复问题。

查看William Cerniuk的答案和附件照片。

在我的情况下,我得到这个错误:架构x86_64未定义的符号:“_OBJC_CLASS _ $ _ RCTImageLoader”

我能够通过在Podfile文件中添加以下一行来修复它:

pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'

参考