Питання для початківців 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-файл). Бібліотека IOBluetooth є тим самим стандартним фреймворком, як Foundation Framework.
Що я пропускаю у своєму вище твердженні?
Я також спробував створити його для 32-бітної машини (збір знову не вдається). Очевидно, що помилка лінкера, однак я не маю уявлення, до чого це стосується, за винятком того, що існує проблема з пошуком реалізації для IOBluetoothDevice, як для архітектури x86, так і для x64, тоді як файли заголовків є зі стандартного включеного Framework, що називається 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;
}
Дякуємо за будь-яку допомогу чи покажчики в потрібному напрямку.
$(inherited)
до інших прапорів Linker , очистити та створити.