2011-12-27 9 views
5

मैं सिर्फ गैर एआरसी कोड के रूप में मेरे CocoaAsyncSocket कोड के सभी चिह्नित है, और यह मुझे इन 3 त्रुटियों दिया है:आर्किटेक्चर armv7 के लिए अनिर्धारित प्रतीकों? इस त्रुटि का मतलब क्या है?

Undefined symbols for architecture armv7: 
    "_kCFStreamNetworkServiceTypeVoIP", referenced from: 
     -[GCDAsyncSocket enableBackgroundingOnSocketWithCaveat:] in GCDAsyncSocket.o 
    "_kCFStreamNetworkServiceType", referenced from: 
     -[GCDAsyncSocket enableBackgroundingOnSocketWithCaveat:] in GCDAsyncSocket.o 
    "_kCFStreamPropertySSLSettings", referenced from: 
     -[GCDAsyncSocket maybeStartTLS] in GCDAsyncSocket.o 
ld: symbol(s) not found for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

किसी को भी पता है कि इसका क्या मतलब है और कैसे इसे ठीक करने के?

+7

क्या आप 'सीएफनेटवर्क' के खिलाफ लिंक कर रहे हैं? –

उत्तर

4

इसका मतलब है कि कुछ कोड आप संकलन कर रहे हैं स्थिरांक "kCFStreamNetworkServiceTypeVoIP", "kCFStreamNetworkServiceType", और "kCFStreamPropertySSLSettings" को संदर्भित करती है, लेकिन वह उन स्थिरांक नहीं पाए गए जब यह पुस्तकालयों का उपयोग करता है के साथ अपने कोड जोड़ने की कोशिश की।

  • आप उन्हें गलत वर्तनी हो सकता था
  • वे # कि वास्तुकला
  • आप सही librar लिंक नहीं किया जा सकता है के लिए बाहर ifdef'd हो सकता है:

    दुर्भाग्य से ऐसा कई कारणों से एक गुच्छा इस हो सकता है (y, एँ)

  • वे होने 'छुपा' दृश्यता के रूप में चिह्नित किया जा सकता है इतना है कि वे केवल घोषित पुस्तकालय में
  • शायद अन्य कारणों
  • इस्तेमाल किया जा सकता

आप लाइब्रेरी की बाइनरी से निर्यात किए गए प्रतीकों पर पोक करने के लिए 'एनएम' और 'ओटोल-एल' का उपयोग कर सकते हैं ताकि यह जांच सके कि आपकी बाइनरी किस पुस्तकालय को जोड़ रही है।

16

मुझे लगता है कि मुझे कोड टिप्पणियों को देखकर इसका समाधान मिला, लेकिन अब मैं देखता हूं कि मार्क एडम्स ने सुझाव दिया है। जब तक मैंने लक्ष्य के तहत CFNetwork.framework जोड़ा-> बिल्ड चरण-> लाइब्रेरीज़ के साथ लिंक बाइनरी-> CFNetwork.framework

+2

यह सही जवाब है, CFNetwork.framework गुम है –

+0

धन्यवाद, डुनेकैट! :-) –

+0

@DuneCat इससे मदद मिलती है। मुझे नहीं पता था, आईओएस नोब होने के नाते, आपको मैन्युअल रूप से ढांचे को जोड़ने की जरूरत है। मैंने किसी भी तरह अनुमान लगाया कि सब कुछ पहले से ही शामिल है। लिंक्ड फ्रेमवर्क और लाइब्रेरी -> प्लस साइन पर क्लिक करें -> मेरे लिए फ्रेमवर्क काम जोड़ें। मेरे पास सी # में इसी प्रकार की गलती थी, लेकिन वहां विजुअल स्टूडियो आपको सूचित करता है। मुझे लगता है ... वैसे भी धन्यवाद। –

0

मुझे एना में LineaPro API को एकीकृत करते समय भी यही त्रुटि थी।

जो फिक्स मैंने कार्यान्वित किया वह बाहरी -> लिंक्ड फ्रेमवर्क और लाइब्रेरीज़ को बाहरी एक्सेसरी.फ्रेमवर्क जोड़ रहा था।

मेरे पास पहले से ही CFNetwork.framework शामिल था।

संबंधित मुद्दे