Eine Xcode-Anfängerfrage:
Es ist meine erste Erfahrung mit Xcode 4.6.3.
Ich versuche, ein sehr einfaches Konsolenprogramm zu schreiben, das nach gekoppelten BT-Geräten sucht und diese in einem NSLog druckt.
Es wird mit folgendem Fehler erstellt:
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)
Ich suchte wie verrückt. Das häufigste Problem sollte ein Verweis auf eine Datei sein, von der nur die Header-Dateien importiert werden und der Linker keine Implementierung (* .m-Datei) findet. Die IOBluetooth-Bibliothek ist jedoch ein Standard-Framework wie das Foundation Framework.
Was fehlt mir in meiner obigen Aussage?
Ich habe auch versucht, es für einen 32-Bit-Computer zu erstellen (Build schlägt erneut fehl). Es ist eindeutig ein Linker-Fehler, aber ich habe keine Ahnung, worauf es ankommt, außer dass es ein Problem gibt, die Implementierung für IOBluetoothDevice sowohl auf der x86- als auch auf der x64-Architektur zu finden, während die Header-Dateien von einem standardmäßigen enthaltenen Framework stammen, das aufgerufen wird IOBluetooth?
Zu Ihrer Information ist mein Hauptcode "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;
}
Vielen Dank für jede Hilfe oder Hinweise in die richtige Richtung.
$(inherited)
, andere Linker-Flags hinzuzufügen , zu bereinigen und zu erstellen.