2009-05-05 14 views
9

के लिए कस्टम SQLite संकलित करना मैं अपने आईफोन ऐप में SQLite amalgamation स्रोत को संकलित करने की कोशिश कर रहा हूं (मुझे पूर्ण-पाठ खोज कार्यक्षमता तक पहुंच प्रदान करने के लिए जो बाइनरी के आईफोन-संकलित संस्करण में उपलब्ध नहीं है।एक आईफोन ऐप

जब मैं एक सामान्य कार्बन सी ऐप टेम्पलेट में sqlite3.c और sqlite3.h जोड़ता हूं, तो यह ठीक है (एक अप्रयुक्त चर के बारे में एक चेतावनी के साथ) संकलित करता है, लेकिन जब मैं इसे अपने आईफोन प्रोजेक्ट में संकलित करने का प्रयास करता हूं तो मुझे एक मिलता है लापता फ़ंक्शन घोषणाओं से संबंधित त्रुटियों की संख्या। मैं इन समस्याओं को स्पष्ट रूप से ctype.h सहित हल करने में सक्षम हूं, लेकिन यह थोड़ा अजीब है।

हालांकि, इसे बनाने के बाद भी यह अनुयायियों से जुड़ने में विफल रहता है त्रुटि के कारण:

"_sqlite3_version", referenced from: 
_sqlite3_version$non_lazy_ptr in sqlite3.0 
symbol(s) not found 
collect2: ld returned 1 exit status 

मुझे लगता है कि यह आईफोन ऐप की बिल्ड सेटिंग्स में कुछ है, लेकिन मैं इसे समझ नहीं सकता। कोई विचार?

+0

आप आईफोन परिनियोजन के लिए कार्बन सी ऐप टेम्पलेट का उपयोग क्यों कर रहे हैं? –

+0

मैं नहीं हूं। मैं सिर्फ यह देखना चाहता था कि यह कहीं भी संकलित होगा - यानी, यदि आईफोन प्रोजेक्ट की सेटिंग्स समस्याएं पैदा कर रही हैं - तो मुझे लगा कि मूल कार्बन सी टेम्पलेट हस्तक्षेप करने की संभावना कम होगी। –

+0

(और, आकस्मिक रूप से, मैं सही था, क्योंकि यह ठीक से संकलित) –

उत्तर

5

इस चरणों के साथ यह प्रयास करें:

  1. xcode मेनू -> परियोजना -> नया लक्ष्य -> ​​स्थिर पुस्तकालय -> लक्ष्य नाम: SQLite
  2. परियोजना में
  3. ड्रॉप SQLite समामेलन स्रोत, अब आप चुन सकते हैं लक्ष्य, SQLite
  4. xcode मेनू चुनें -> परियोजना -> संपादित करें सक्रिय लक्ष्य -> ​​टैब जनरल -> प्रत्यक्ष निर्भरता -> जोड़ने SQLite
  5. टैब जनरल -> लिंक पुस्तकालय -> अपने SQLite जोड़ने
+0

मैंने यहां दिशानिर्देशों का पालन करते हुए इसका एक भिन्नता समाप्त कर दिया: http://www.clintharris.net/2009/iphone-app-shared- पुस्तकालय/ काफी अच्छी तरह से काम किया। –

+0

@makdad कि लिंक टूटा हुआ प्रतीत होता है –

0

उस प्रकार की त्रुटि आमतौर पर एक लापता ढांचे का मतलब है।

  1. दाएँ या अपने परियोजना की फ़्रेमवर्क फ़ोल्डर पर नियंत्रण-क्लिक करें।
  2. करें जोड़ें> मौजूदा फ्रेमवर्क ...
  3. जाएं: Macintosh HD> डेवलपर> प्लेटफार्म> iPhoneOS.platform> डेवलपर> SDKs> iPhoneOS2.2sdk> usr> lib और libsqlite3.dylib चयन
  4. अपनी परियोजना के पुनर्निर्माण

कि यह का ध्यान रखना चाहिए, मुझे लगता है। आपको आईफोन सिम्युलेटर पर चलने के लिए एक समान लाइब्रेरी जोड़ने की आवश्यकता हो सकती है।

+0

लेकिन अगर मैं ऐसा करता हूं, तो यह अंतर्निहित SQLite लाइब्रेरी के खिलाफ लिंक करने जा रहा है, है ना? जबकि मैं अपने कस्टम संकलित एक का उपयोग करना चाहता हूं (क्योंकि इसमें ऐसी विशेषताएं हैं जो अंतर्निहित एक नहीं है)। –

+0

मुझे नहीं पता कि आप ऐसा कर सकते हैं। मुझे एहसास है कि ऐप्पल इसे पसंद नहीं करेगा। मैं गलत हो सकता है हालांकि –

+0

@bdotdub - आप निश्चित रूप से ऐसा कर सकते हैं - और सेब की देखभाल क्यों होगी? ऐसा नहीं है कि वह सिस्टम संस्करण को प्रतिस्थापित करने की कोशिश कर रहा है, बस उसके आवेदन द्वारा उपयोग किए गए एक नए संस्करण में संकलित करें। यह काफी मानक अभ्यास है। –

1

मैंने इसे समामेलन का उपयोग करके ऐसा करने में कामयाब रहा है और लिंकिंग कैटलान को सुझाव दिए बिना सीधे इसे अपने प्रोजेक्ट में डाला है (मैं यह नहीं कह रहा हूं कि यह एक बुरा विचार है, केवल मुख्य परियोजना में करना संभव है)।

मुझे कुछ भी संपादित करने की आवश्यकता नहीं थी (टेक्स्ट खोज के लिए आवश्यक एफटीएस परिभाषा को जोड़ने के अलावा) और संकलित त्रुटि मुक्त। अपनी बिल्ड सेटिंग्स जांचें और सुनिश्चित करें कि '-sqlite3' आपके अन्य लिंकिंग ध्वज में नहीं है।

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