La pregunta de un principiante de Xcode:
Es mi primera experiencia con Xcode 4.6.3.
Estoy tratando de escribir un programa de consola muy simple, que busca dispositivos BT emparejados y los imprime en un NSLog.
Se construye con el siguiente error:
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)
Busqué como loco. El problema común debería ser una referencia a un archivo, del cual solo se importan los archivos de encabezado y el vinculador no encuentra ninguna implementación (* .m-file). Sin embargo, la biblioteca IOBluetooth es un Framework estándar como Foundation Framework.
¿Qué me estoy perdiendo en mi declaración anterior?
También he intentado compilarlo para una máquina de 32 bits (la compilación falla nuevamente). Es claramente un error del vinculador, sin embargo, no tengo idea de lo que se relaciona, excepto que existe un problema para encontrar la implementación de IOBluetoothDevice, tanto en la arquitectura x86 como en la x64, mientras que los archivos de encabezado provienen de un Framework incluido estándar, llamado IOBluetooth?
Para su información, mi código principal "main.m" es:
#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;
}
Gracias por cualquier ayuda o punteros a la dirección correcta.
$(inherited)
a otras banderas vinculadoras , limpie y construya.