2008-11-14 12 views
26

मैं अपने iphone आवेदन और स्रोत कोड मैं ब्रैड लार्सन द्वारा प्रदान की अणु का नमूना कोड ऊपर मजाक था में शामिल किया है में आयात zlib, तथापि, जब मैं इस परियोजना का निर्माण, यह त्रुटि देता है नीचे के रूप में। क्या कोई मेरे लिए इंगित कर सकता है कि क्या यह एक लाइब्रेरी लिंकिंग समस्या है या क्या मुझे कुछ और याद आ रहा है?त्रुटि जब iPhone SDK

"_deflate", referenced from: -[NSData(Gzip) gzipDeflate] in NSData+Gzip.o "_inflateEnd", 
referenced from: -[NSData(Gzip) initWithGzippedData:] in NSData+Gzip.o "inflateInit2", 
referenced from: -[NSData(Gzip) initWithGzippedData:] in NSData+Gzip.o "_inflate", 
referenced from: -[NSData(Gzip) initWithGzippedData:] in NSData+Gzip.o "_deflateEnd", 
referenced from: -[NSData(Gzip) gzipDeflate] in NSData+Gzip.o "deflateInit2", referenced 
from: -[NSData(Gzip) gzipDeflate] in NSData+Gzip.o ld: symbol(s) not found collect2: ld 
returned 1 exit status 
+1

क्या आपने अपनी परियोजना में libz जोड़ा था? –

उत्तर

80

अपने लक्ष्य के Build Settings टैब में, Other Linker Flags अनुभाग तक स्क्रॉल करें और सुनिश्चित करें कि -lz क्षेत्र में है या नहीं। यह अंतर्निहित zlib के खिलाफ लिंक करेगा, और आपकी त्रुटि दूर जाना चाहिए।

लिंकर ध्वज बदलने के बाद आपको Clean को Product मेनू से फिर से निर्माण करने से पहले चुनना होगा।

lz screenshot

+1

हाँ यह समस्या हल करें धन्यवाद – issac

+4

मुझे लगता है कि जेसन का जवाब एक और अधिक विश्वसनीय तरीका है। – Plumenator

+1

@ प्लूमनेटर बेन के उत्तर में आप एक libz का उपयोग कर रहे हैं जो आपके ऐप का एकमात्र हिस्सा है। जेसन के जवाब में आप एप्लिकेशन में अतिरिक्त libz जोड़ रहे हैं। यही कारण है कि बेन का जवाब बेहतर है, यह अधिक कुशल है (कोर्स के जेसन के लिए कोई अपराध नहीं)। – Jacksonkr

46

अपनी परियोजना के लिए libz जोड़ें। ऐसा करने के लिए, Xcode में इन चरणों का पालन:

  1. अपनी परियोजना खोलें, अपनी परियोजना के लक्ष्य का चयन करें और फिर अपने उपकरण पट्टी (या प्रेस ⌘I)
    Example 1
  2. पर नीले रंग परियोजना की जानकारी आइकन पर क्लिक करें जोड़ने के लिए + लाइब्रेरी जोड़ने के लिए स्क्रीन के निचले बाएं कोने में बटन, लाइब्रेरी सूची के नीचे नीचे स्क्रॉल करें और libz.dylib का चयन करें; जोड़ें बटन पर क्लिक करें।
    Example 2
  3. एक बार जब आप जोड़ पर क्लिक कर लेंगे, तो आप देखेंगे कि लाइब्रेरी का नाम लिंक्ड लाइब्रेरीज़ की ओयूर सूची में दिखाई देता है। अब आप त्रुटियों को जोड़ने के बिना अपनी परियोजना का निर्माण करने में सक्षम होंगे।
    Example 3

आप सूची से किसी भी पुस्तकालय जोड़ने के लिए इस एक ही विधि का उपयोग कर सकते हैं। यदि पुस्तकालय सूची में प्रकट नहीं होता है, तो आप जानते हैं कि यह मानक आईफोन एसडीके का हिस्सा नहीं है और आपको अपने समाधान पर पुनर्विचार करना होगा या लाइब्रेरी को स्थिर रूप से स्वयं बनाना होगा और अपने लक्ष्य को उस लिंक से जोड़ना होगा (यदि संभव हो)।

+1

बहुत उपयोगी उत्तर। इस द्वारा हल समस्या। – Jyotsna

+2

-1 - जबकि यह एक बहुत अच्छा जवाब है, libz.dylib अब आपके लक्ष्य में लाइब्रेरी जोड़ने पर उपलब्ध नहीं है और उन्हें मानक पुस्तकालयों के लिए किसी भी तरह से उपयोग नहीं किया जाना चाहिए। इसके बजाय अपने लिंकर झंडे में '-lz' जोड़ें। –

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