2011-08-07 13 views
6

पर एक साधारण लाइब्रेरी जोड़ना मुझे पता है कि यह एक बहुत ही सरल सवाल है लेकिन मैं थोड़ी देर के लिए इसके साथ संघर्ष कर रहा हूं। मैंने कुछ धागे पढ़े हैं लेकिन अभी भी जवाब मिल रहा है।एक एक्सकोड 4 प्रोजेक्ट

मैं अपने मौजूदा प्रोजेक्ट में यह DDMathParser लाइब्रेरी जोड़ने की कोशिश कर रहा हूं। गणित पार्सर प्रलेखन

"बस अपनी परियोजना में" डीडीमैथपार्सर "सबफ़ोल्डर की प्रतिलिपि बनाएँ, #import" DDMathParser.h ", और आप जाने के लिए अच्छे हैं।"

मैंने अपने प्रोजेक्ट में सबफ़ोल्डर जोड़ा और मेरे पहले व्यू कंट्रोलर में हेडर `#import" DDMathParser.h 'जोड़ा। पहले एक्सकोड यह बता रहा था कि यह फ़ाइल नहीं ढूंढ पा रहा है। मैंने एक और थ्रेड से सलाह ली और मेरे हैडर बदल फ़ोल्डर

#import "DDMathParser/DDMathParser.h" 

Xcode फ़ोल्डर और हेडर फाइल को खोजने के लिए लगता है शामिल करने के लिए, लेकिन इस तरह के रूप

NSLog(@"%@", [@"1 + 2" numberByEvaluatingString]); 

मैं 'त्रुटि थ्रेड 1 हो रही है जब मैं प्रलेखन से एक परीक्षण चलाने : कार्यक्रम प्राप्त किया गया: "SIGABRT" 'मैं डीडीमैथपार में देख सकता हूं सीर नमूना फ़ाइल है कि एक लक्ष्य है, मैं सोच रहा हूं कि यह मेरी समस्या है या नहीं।

सवाल मैं एक साधारण दृश्य नियंत्रक से DDMathParser पुस्तकालय जोड़ने के लिए कोशिश कर रहा हूँ स्पष्ट है और ऐसा करने बहुत सराहना की जाएगी में staement NSLog(@"%@", [@"1 + 2" numberByEvaluatingString]); किसी भी मदद/स्पष्टीकरण को चलाने के लिए।

उत्तर

12

सबसे पहले, कृपया उप-फ़ोल्डर प्रतिलिपि के माध्यम से अपने प्रोजेक्ट में डीडीमैथपार्सर कोड न जोड़ें। ऐसा करने से कोड को किसी भी भविष्य के अपडेट को आसानी से पकड़ने में दर्द हो जाएगा और आम तौर पर आपकी परियोजनाओं में बाहरी कोड को शामिल करने का एक बहुत अच्छा तरीका नहीं है।

इसके बजाय, आपको अपनी परियोजना के एक सबमिशन के रूप में गिट रेपो जोड़ना चाहिए (आप गिट का उपयोग कर रहे हैं, है ना?) और अपनी परियोजना में प्रासंगिक फाइलों को आयात करें। यहां एक चरण-दर-चरण समाधान है:

  1. अपनी परियोजना में एक सबमिशन के रूप में डीडीमैथपार्सर रेपो जोड़ें। Here are instructions अपनी प्रोजेक्ट निर्देशिका में एक सबमिशन जोड़ने के तरीके पर। उस उत्तर पर नज़र डालें, लेकिन अल्पसंख्यक के लिए, आप इस प्रोजेक्ट की रूट निर्देशिका में टर्मिनल से यह आदेश जारी करेंगे: git submodule add https://github.com/davedelong/DDMathParser.git External/DDMathParser। यह आपकी परियोजना रूट निर्देशिका के बाहरी नामक एक नई उपनिर्देशिका तैयार करेगा और बाहरी डीडीमैथपार्सर परियोजना के अंदर कॉपी की जाएगी।
  2. अपनी परियोजना में DDMathParser निर्देशिका जोड़ें। यह <Your Root Project Dir>/External/DDMathParser/DDMathParser निर्देशिका में मिलेगा। "कॉपी आइटम" चेकबॉक्स को चेक करने के लिए "लक्ष्य में जोड़ें" चेकबॉक्स और को जांचना सुनिश्चित करें।
  3. अपने व्यू कंट्रोलर में #import "DDMathParser.h" जोड़ें।

डीडीमैथपार्सर अब आपकी अपेक्षा के अनुसार काम करना चाहिए। यदि लेखक कोड के अपडेट के साथ आता है तो आप github: git submodule update से नवीनतम अपडेट खींचने के लिए टर्मिनल से निम्न आदेश जारी कर सकते हैं।

नोट: मैंने स्क्रैच से एक नई परियोजना बनाई है, इन चरणों का पालन किया है और यह सुनिश्चित करने के लिए आपके NSLog() उदाहरण शामिल हैं कि कोई समस्या नहीं है।

+0

उत्तर के लिए धन्यवाद आपकी पोस्ट बहुत उपयोगी थी हालांकि मुझे अभी भी त्रुटियां मिल रही हैं। मैंने आपके निर्देशों का पालन-चरण कदम उठाया और बाहरी निर्देशिका में कोड डाउनलोड करने में सक्षम था, परियोजनाओं में फाइलें जोड़ें और बिना किसी समस्या के हेडर जोड़ें लेकिन जब मैं अपना टेस्ट प्रोग्राम चलाता हूं तो मुझे 15 त्रुटियां मिलती हैं जो सभी DDMathEvaluator.m और _DDDEcimalFunctions से निकलती हैं मीटर। मुझे लगता है कि मैंने आपके द्वारा अलग-अलग क्या किया है, यह पता लगाना नहीं है। अगर आपको कोई सुझाव है तो कृपया मुझे बताएं और मदद के लिए बहुत बहुत धन्यवाद! – user813611

+0

हम्म ... क्या आप वाकई अपने लक्ष्य का चयन करते हैं जब आप कहां अपनी परियोजना में डीडीमैथपार्सर निर्देशिका जोड़ रहे थे? यदि आप DDMathEvaluator.m का चयन करते हैं तो आप पुष्टि कर सकते हैं कि यह आपके लक्ष्य में शामिल है? जैसा कि मैंने कहा था, मैं इस चरण-दर-चरण के माध्यम से चल रहा था क्योंकि मैं मदद लिख रहा था और यह ठीक काम करता था। एक परीक्षण के रूप में, क्या आप खरोंच से एक नई परियोजना बना सकते हैं और इसे आज़मा सकते हैं? – memmons

+0

उत्तर हर्कोनियन के उत्तर के लिए धन्यवाद, 1. मैंने गिट रिपोजिटरी 2 के साथ गणितर्सटेस्ट व्यू आधारित ऐप नामक एक नई परियोजना बनाई है। मैंने परियोजना रूट रूट 3 में डीडीमैथपार्सर डाउनलोड करने के लिए टर्मिनल कमांड का उपयोग किया है। मैं फ़ाइल-> फाइलें " mathParserTest "तो मैं त्रुटियों को अनचेक समूहों में कॉपी आइटम के साथ Dir>/बाहरी/DDMathParser/DDMathParser का चयन करता हूं, किसी भी जोड़े गए फ़ोल्डरों के लिए समूह बनाएं और लक्ष्य में जोड़ें mathParserTest चेक किया गया। इस लक्ष्य के पास आईबी आइकन है जिसका नाम mathParserTest है। फाइलों के साथ फ़ोल्डर प्रोजेक्ट में आयात करता है और जब तक मैं संकलित नहीं करता तब तक ठीक दिखता है। – user813611

0

मैंने इन चरणों का भी पालन किया, जब तक कि मैं इसे काम नहीं कर सका। सुझाई गई विधि में कुछ त्रुटियां हैं।

  1. के रूप में पुरुष से पहले मुझे यह था --- आप केवल DDMathParser के स्रोतों में लाने के लिए, और उन्हें अपने लक्ष्य के हिस्से के रूप संकलन। यह को उसी बिल्ड-सेटिंग्स, एसडीके संस्करण और तैनाती सिस्टम-संस्करण का उपयोग डीडीमैथपार्सर के लेखक के रूप में करने के लिए करता है। उदाहरण:

    • मेरे लक्ष्य में एआरसी का उपयोग नहीं किया --- अब मुझे चाहिए।
    • मैं अपने प्रोजेक्ट में मैकोज़ 10.8 एसडीके का उपयोग करना चाहता था (कई अच्छे कारणों से) लेकिन मुझे एक डीडीमैथपार्स स्रोत में अजीब एआरसी संकलन त्रुटि मिली, जो केवल गायब हो गया क्योंकि मैंने एसडीके 10.9 पर स्विच किया (संस्करण उनके नमूने और दस्तावेज़ों में इस्तेमाल किया गया संस्करण)।
    • मैं MacOS 10.8 के लिए अपने आवेदन प्रदान करनी चाहिए और इसके बाद के संस्करण, अब मैं अनिश्चित हूँ यह काम करेगा
  2. मैं नहीं जानता कि अगर मैं सर्वर से मेरी माता पिता रेपो धक्का क्या होता है, और एक अन्य दोस्त खींचती यह। क्या वह स्वचालित रूप से डीडीमैथपार्सर रेपो प्राप्त करेगा? कैसे? उसे इसकी पहुंच होनी चाहिए! यह योजना मेरे लिए पूरी तरह प्रतीत नहीं होती है।

मैं एक रूपरेखा के रूप में अपने DDMathParser पैकेजिंग में लेखक सहायता करने के लिए सुझाव देगा, और फिर आप अपने प्रोजेक्ट में DDMAthParser के प्रोजेक्ट फ़ाइल आयात करने के लिए --- स्रोतों नहीं कर सकेंगे, और बस के खिलाफ लिंक डीडीमैथपार्सर प्रोजेक्ट का उत्पाद (एक निजी ढांचा)। बहुत अच्छा लगता है। ढांचे को लेखक की सेटिंग्स का उपयोग करके संकलित किया जा सकता है, और हम केवल अच्छी तरह से पैक बाइनरी प्राप्त करते हैं।

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