2009-02-03 11 views
6

मैं अपने आईफोन ऐप में पीएलडीबेसैट फ्रेमवर्क का उपयोग करने की कोशिश कर रहा हूं। मैंने अपने एक्सकोड प्रोजेक्ट में ढांचा जोड़ा है। हालांकि, जब मैं अपने अनुप्रयोग चलाने के लिए, यह निम्न त्रुटि के साथ दुर्घटनाओं:मैं आईफोन प्रोजेक्ट में एक थर्ड पार्टी फ्रेमवर्क कैसे जोड़ूं?

dyld: Library not loaded: @loader_path/../Frameworks/PlausibleDatabase.framework/Versions/A/PlausibleDatabase 
    Referenced from: /Users/todd/Library/Application Support/iPhone Simulator/User/Applications/BB3C66B2-A5BB-4329-B163-AB0072411AF1/Congress.app/Congress 
    Reason: image not found 

मुझे यकीन है कि वह जगह है जहाँ फ्रेमवर्क पाया जा करने के लिए डिस्क पर निवास करने की जरूरत नहीं है।

धन्यवाद

उत्तर

10

iPhone एम्बेडेड चौखटे के गतिशील जोड़ने का समर्थन नहीं करता। जबकि आप काम करने के लिए सिम्युलेटर को फाइनल करने में सक्षम हो सकते हैं, यह डिवाइस पर काम नहीं करेगा। यदि आप कोड का उपयोग करना चाहते हैं तो आपको ढांचे के लिए स्थैतिक पुस्तकालय बनाना होगा (libpldatabase.a), और फिर उन्हें ऐप से लिंक करें।

Xcode जीयूआई स्थिर जोड़ने के लिए एक अच्छी इंटरफेस प्रदान नहीं करता है, तो आप अपने निर्माण वरीयता में उचित झंडे जोड़ने की आवश्यकता होगी (-lpldatabase एल/जो कुछ भी/dir/यह/है/में)।

6

आरई @ मिपाडी: ज़ीरोलिंक को एक्सकोड 3.1 में हटा दिया गया था और आईफोन एसडीके के लिए मौजूद नहीं है। सही जवाब लुई 'है; आईफोन डेवलपर-निर्मित अनुप्रयोगों में गतिशील रूप से लोड फ्रेमवर्क का समर्थन नहीं करता है।

एक्सकोड में स्थिर पुस्तकालयों के लिए एक अच्छा उपयोगकर्ता इंटरफ़ेस है; बस उन्हें परियोजना में खींचें और उन्हें लिंक चरण में जोड़ा गया है। लिंकर झंडे के साथ झगड़ा करने की कोई ज़रूरत नहीं है। समस्या तब होती है जब आपको उन स्थिर libs के साथ प्रदान किए गए शीर्षलेखों का उपयोग करने की आवश्यकता होती है (फिर आपको हेडर खोज पथ मैन्युअल रूप से जोड़ना होगा) या जब एक स्थिर lib एक उपलब्ध dylib के साथ संघर्ष करता है (वह तब होता है जब आपको मैन्युअल रूप से -l ध्वज जोड़ना होता है) ।

8

यह वास्तव में सच में सच नहीं है कि आईफोन गतिशील लिंकिंग का समर्थन नहीं करता है। सच यह है कि ऐप स्टोर द्वारा इंस्टॉल किए गए एप्लिकेशन गतिशील रूप से लिंक करने में असमर्थ हैं।

ऐप स्टोर/इट्यूनेड प्रोग्राम/निजी/var/mobile/... निर्देशिका में स्थापित करता है। किसी भी कार्यक्रम को खोला गया है कि उस उपनिर्देशिका में रहता है और खोले जाने पर कुछ अधिकार छीन लेते हैं। Chrooted प्रक्रियाओं कांटा नहीं जा सकता है, वे पृष्ठभूमि में नहीं चला सकते हैं, वे गतिशील पुस्तकालयों को लोड नहीं कर सकते हैं और वे डिस्क के अपने छोटे संरक्षित क्षेत्रों के बाहर फ़ाइलों को सहेज नहीं सकते हैं (फोटो निर्देशिका में फोटो के अपवाद के साथ)।

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

ऐप्पल (और खुले आईफोन समुदाय) में फोन पर चलने वाले बहुत से कार्यक्रम हैं (जैसे मोबाइलफोन, मोबाइल सफारी और स्प्रिंगबोर्ड एप्लिकेशन) जो पृष्ठभूमि और लोड लाइब्रेरी में चल सकते हैं। उन्हें डिस्क पर एक अलग स्थान पर रखा जाता है (/ निजी/var/stash/अनुप्रयोग अक्सर)।

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

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