Bir Xcode acemi sorusu:
Xcode 4.6.3 ile ilk deneyimim.
Eşleştirilmiş BT cihazlarını arayan ve bir NSLog'a yazdıran çok basit bir konsol programı yazmaya çalışıyorum.
Aşağıdaki hatayla oluşturulur:
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)
Deli gibi aradım. Sık karşılaşılan sorun, yalnızca başlık dosyalarının içe aktarıldığı ve bağlayıcı tarafından hiçbir uygulama (* .m dosyası) bulunmayan bir dosyaya başvuru olmalıdır. Ancak IOBluetooth kütüphanesi, Foundation Framework gibi standart bir Framework'tür.
Yukarıdaki açıklamamda ne eksik?
Ayrıca 32-bit bir makine için inşa denedim (yapı tekrar başarısız). Açıkça bir linker hatası, ancak ne ile ilgili hiçbir fikrim yok, sadece x86 ve x64 mimarisinde, IOBluetoothDevice için uygulama bulmakla ilgili bir sorun olması dışında, üstbilgi dosyaları adı verilen standart bir Çerçeve, IOBluetooth?
Bilginiz için benim ana kod "main.m" olmak:
#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;
}
Herhangi bir yardım veya doğru yönü işaret ettiğiniz için teşekkür ederiz.
$(inherited)
için diğer Bağlayıcı Flags , temiz ve yapı.