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).然而,iBuLUTHORT库是一个标准框架,如基础框架.

我在上述声明中遗漏了什么?

我还try 过为32位机器构建它(构建再次失败).这显然是一个链接器错误,但我不知道它与什么有关,除了在x86和x64体系 struct 上查找IOBluetoothDevice的实现存在问题,而头文件来自一个标准的包含框架,称为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;
}

谢谢你的帮助或指点.

推荐答案

看起来你失踪了,包括蓝牙.项目中的框架.您可以通过以下方式添加:

  • 点击左窗格左上角的项目(蓝色图标).

  • 在中间窗格中,单击"生成阶段"选项卡.

  • 在"将二进制文件链接到库"下,单击加号按钮.

  • 找到手机.从列表中 Select 框架并点击Add.

enter image description here

enter image description here

这将确保IOBluetooth.链接器可以找到框架定义.通过单击左窗格中的框架并在右窗格中查看框架的目标成员身份,可以看到框架是目标的成员(注意,出于组织目的,我已将框架移动到框架组下):

enter image description here

Objective-c相关问答推荐

将未知数量的行添加到静态单元UITableView

在 Objective C 中将属性标记为已弃用

UIRefreshControl iOS 6 xcode

如何为代码自动格式化设置 Xcode 插件

如何更改图像 tintColor

更改 UIDatePicker 字体 colored颜色 ?

NSMutableDictionary 线程安全

如何在使用 React Native 时实现 SSL 证书固定

NSString:从字符串中删除 UTF-8 重音的简单方法?

Xcode:可以为协议接口所需的方法自动创建存根吗?

如何删除应用程序指定目录中的所有文件?

iOS - 从应用程序获取 CPU 使用率

将 HTTP 标头添加到 NSURLRequest

如何对包含数字的 NSMutable 数组进行排序?

Objective-C:前向类声明

获取临时目录中文件的文件路径和 URL

创建 NSTextField标签的示例代码?

writeToFile:atomically: atomically 是什么意思?

UICollectionView 断言失败

Xcode中私有方法的单元测试