คำถามของ 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-file) โดย linker อย่างไรก็ตามห้องสมุด IOBluetooth นั้นเป็น Framework มาตรฐานเช่น Foundation Framework
ฉันหายไปอะไรในคำสั่งด้านบน
ฉันได้ลองสร้างมันด้วยเครื่องจักร 32 บิต (บิลด์ล้มเหลวอีกครั้ง) เห็นได้ชัดว่าเป็นข้อผิดพลาด linker แต่ฉันไม่มีความคิดในสิ่งที่เกี่ยวข้องยกเว้นว่ามีปัญหากับการค้นหาการใช้งานสำหรับ IOBluetoothDevice ทั้งในสถาปัตยกรรม x86 และ x64 ในขณะที่ไฟล์ส่วนหัวมาจากมาตรฐานรวมกรอบเรียกว่า 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)
ในOther Linker Flagsทำความสะอาดและสร้าง