Pytanie początkującego Xcode:
To moje pierwsze doświadczenie z Xcode 4.6.3.
Próbuję napisać bardzo prosty program konsoli, który wyszukuje sparowane urządzenia BT i drukuje je do NSLog.
Kompiluje się z następującym błędem:
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)
Szukałem jak szalony. Typowym problemem powinno być odniesienie do pliku, z którego importowane są tylko pliki nagłówkowe, a konsolidator nie może znaleźć implementacji (* .m-file). Jednak biblioteka IOBluetooth jest standardową strukturą, taką jak Foundation Framework.
Czego mi brakuje w powyższym zestawieniu?
Próbowałem również zbudować go dla maszyny 32-bitowej (kompilacja znowu się nie udała). Jest to oczywiście błąd konsolidatora, jednak nie mam pojęcia, do czego się odnosi, poza tym, że jest problem ze znalezieniem implementacji dla IOBluetoothDevice, zarówno w architekturze x86, jak i x64, podczas gdy pliki nagłówkowe pochodzą ze standardowego Framework o nazwie IOBluetooth?
Dla twojej informacji mój główny kod „main.m” to:
#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;
}
Dzięki za wszelką pomoc lub wskazówki we właściwym kierunku.
$(inherited)
do innych flag konsolidatora , wyczyść i skompiluj.