एक Xcode शुरुआत के सवाल:
यह Xcode 4.6.3 के साथ मेरा पहला अनुभव है।
मैं एक बहुत ही सरल कंसोल प्रोग्राम लिखने की कोशिश कर रहा हूं, जो युग्मित बीटी उपकरणों की खोज करता है और उन्हें एक 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- फ़ाइल) नहीं मिलता है। IOBlu ब्लूटूथ लाइब्रेरी, हालांकि, फाउंडेशन फ्रेमवर्क की तरह एक मानक फ्रेमवर्क है।
मेरे उपरोक्त कथन में मुझे क्या याद आ रहा है?
मैंने इसे 32-बिट मशीन (फिर से विफल रहता है) के लिए बनाने की कोशिश की है। यह स्पष्ट रूप से एक लिंकर त्रुटि है, हालांकि मेरे पास कोई विचार नहीं है, यह क्या संबंधित है, सिवाय इसके कि वहाँ एक मुद्दा है IOBluaxyDevice के लिए कार्यान्वयन को खोजने के साथ, दोनों 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)
करने के लिए अन्य लिंकर झंडे , स्वच्छ और निर्माण।