2011-02-04 19 views
5

मैं वर्तमान में कुछ लिंकर में समस्या आ रही है जब एक ऑब्जेक्टिव-सी कार्यक्रम संकलित करने के लिए और कोशिश कर लगता है कि कारण है कि मैं इस मुद्दे को समझ नहीं सकता अज्ञानता के कारण हो सकता है ऑब्जेक्टिव-सी संकलन के दौरान के माध्यम से चला क्या है कंपाइलर प्रक्रिया के रूप में।प्रक्रिया

क्या किसी के लिए संकलन के दौरान किए गए कदमों का अवलोकन करना संभव होगा?

यह मैं वर्तमान प्रक्रिया को समझने के रूप में है:।

  1. संकलक प्रतियां किसी भी ज शामिल फ़ाइलों की सामग्री को फ़ाइल है कि यह में परिभाषित किया गया था में संकलक है कि क्या एक का ट्रैक नहीं रख करता है। एच फ़ाइल पहले से ही शामिल कर दी गई है, इसलिए इसे कई बार एक परियोजना के भीतर शामिल किया जा सकता है।

  2. किसी भी मीटर फ़ाइलें सी बराबर कोड (जो बारी में कोड आपत्ति उठाने संकलित किए जाते हैं) को संकलित कर रहे हैं।

  3. लिंकर वस्तु कोड के भीतर ज फ़ाइलें और उचित कार्यों में किए गए घोषणाओं के बीच संबंध पैदा करता है। उचित कार्य एक ही नाम की .m फ़ाइल में उनकी तलाश करके निर्धारित किए जाते हैं।

  4. वस्तु फ़ाइलों निष्पादन योग्य बनाने के लिए एक साथ जुड़े हुए हैं, यह सुनिश्चित करें कि मुख्य कार्य निष्पादन के प्रवेश बिंदु पर स्थित है बना रही है। अंतरिक्ष बचाने के लिए संभावित रूप से हटाए गए किसी भी घोषणा को हटा दिया जाता है?

इस मान लिया जाये कि सही है (जो यह नहीं हो सकता है), इस शायद मतलब यह होगा कि आप मीटर # शामिल नहीं किया जाना चाहिए फ़ाइलों क्योंकि आप की संभावना कई विधि परिभाषाएँ जो लिंकर समस्याओं का कारण होगा के साथ खत्म हो जाएगा।

किसी भी रोशनी के लिए धन्यवाद कोई भी इस पर ला सकता है :)।

चीयर्स,

डैनी

उत्तर

3

आप कम या ज्यादा सही ढंग से विचार प्राप्त। कुछ सुधार:

  1. #include जाँच नहीं करता है कि क्या यह पहले से ही शामिल है या नहीं है, लेकिन #import जाँच करता है।

  2. .m पहली सी में परिवर्तित नहीं किया जाता है और फिर कोड आपत्ति उठाने का। यह 20 साल पहले इस तरह से किया गया था, लेकिन अब यह मामला नहीं है। यह ऑब्जेक्ट कोड पर सीधे संकलित है।

  3. लिंकर परवाह नहीं है कि फ़ाइल का नाम कैसा रहा था। आप .h और .m के लिए अलग-अलग फ़ाइल नामों का उपयोग कर सकते हैं। उदाहरण के लिए, आप .h फ़ाइल में घोषित कार्यों के कार्यान्वयन को कई .m फ़ाइलों में विभाजित कर सकते हैं।

  4. चाहे अप्रयुक्त कार्यान्वयन या नहीं हटाया जाता संकलक और संकलक विकल्पों पर निर्भर करता है।

किसी भी मामले में, अपने निष्कर्ष सही है: आप/शामिल नहीं किया जाना चाहिए एक और कार्यान्वयन फाइल करने के लिए एक कार्यान्वयन फ़ाइल आयात करें। आप एक डबल-कार्यान्वयन त्रुटि में भाग लेंगे।

+0

आह हे, यह शानदार है; यह अब बहुत स्पष्ट है और मैंने अपने लिंकर मुद्दे को हल कर लिया है! बहुत धन्यवाद! :) – Danny

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