2009-04-01 6 views
6

मेरे पास कोई उद्देश्य-सी अनुभव नहीं है लेकिन एक मजबूत सी ++ पृष्ठभूमि है। क्या कोई स्वचालित उपकरण/स्क्रिप्ट या सबसे खराब मामला है, कुछ मैनुअल विधि उद्देश्य-सी से सी ++ में लिखे गए पोर्ट कोड के कुछ उत्कृष्ट संदर्भ का उपयोग कर? क्या कठिनाइयों में शामिल हैं?उद्देश्य-सी से सी ++ में बंदरगाह का सबसे अच्छा तरीका क्या है?

संपादित करें: मुझे बताया गया है कि कोड उद्देश्य-सी का काफी उपयोग करता है। यह एक आईफोन ऐप है जो शायद ओएस-स्तरीय यूआई के रास्ते में ज्यादा उपयोग नहीं करता है। सी ++ संस्करण गैर-ऐप्पल प्लेटफार्म के लिए है जहां जीएनयूएसटीप एक विकल्प नहीं है, इसलिए उद्देश्य-सी ++ एक विकल्प नहीं है।

+0

आपको लगता है कि सही तरीके मिल गया है? आपके पास एक मजबूत सी ++ पृष्ठभूमि है, लेकिन आप बंदरगाह सामान * * * सी ++ करना चाहते हैं? – Cebjyre

+0

@ सेजजेयर, वह ओबज-सी को इसे पढ़ने और सी ++ में अनुवाद करने के लिए पर्याप्त नहीं जानता है। हालांकि, जब वे दोषपूर्ण अनुवाद के कारण पॉप अप करते हैं तो वह सी ++ कीड़े को सही कर सकते हैं। कम से कम, मैं यही अनुमान लगाता हूं। – strager

+0

मैं इसे एक संभावना के रूप में स्वीकार करूंगा, लेकिन मैं कहूंगा कि रूपांतरण प्रक्रिया में बग्गी कोड में अधिक बग पेश करने की संभावना होगी, इसलिए ज्ञात सी ++ कोड को ओब्जे सी कोड में परिवर्तित करने के लिए एक उपकरण सीखने के परिप्रेक्ष्य से आसान होगा। – Cebjyre

उत्तर

0

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

आप थोड़ी देर के लिए उद्देश्य-सी ढांचे का उपयोग करने के बाद सभी सी ++ कोड में खराब डिज़ाइन देखना शुरू कर सकते हैं।

3

कोई स्वचालित उपकरण नहीं है जिसे मैं जानता हूं। उद्देश्य-सी की गतिशील प्रकृति सी ++ में अनुवाद करना बहुत कठिन है, इसलिए छोटे-छोटे उद्देश्य-सी कोड के लिए मस्तिष्क के प्रयासों की काफी आवश्यकता होगी। क्या आप ओएस एक्स पर रहने के इच्छुक हैं (या जीएसयूएसटीपी निर्भरता को बनाए रखें यदि आप ओएस एक्स के अलावा ओएस पर ऑब्जेक्टिव-सी का उपयोग कर कुछ लोगों में से एक हैं)? यदि ऐसा है, तो उद्देश्य-सी और सी ++ कोड को पुल बनाने के लिए Objective-C++ का उपयोग करना सबसे आसान तरीका है। उद्देश्य-सी ++ उद्देश्य-सी और जीसीसी कंपाइलर के लिए एक ऐप्पल एक्सटेंशन है जो आपको उद्देश्य-सी और सी ++ कोड मिश्रण करने की अनुमति देता है। इस प्रकार आप उद्देश्य-सी ऑब्जेक्ट्स बना सकते हैं जो सी ++ ऑब्जेक्ट्स को कॉल या संदर्भ (लेकिन प्राप्त नहीं करते हैं) और आप उद्देश्य-सी संदेशों को उद्देश्य-सी संदेशों को सी ++ कोड के भीतर से भेज सकते हैं।

6

मैंने एक ही समस्या पर काम किया। और कुछ समाधान हैं:

  • माइक्रोसॉफ्ट अब केवल यूडब्ल्यूपी ऐप्स के लिए अपना स्वयं का उद्देश्य सी "पुल" प्रदान करता है।

    https://github.com/Microsoft/WinObjC

  • 2007 में मैं दृश्य स्टूडियो में ऑब्जेक्टिव-सी का समर्थन करने की कोशिश की और अपने ही ObjC क्रम लिखा था, लेकिन मैं इसके लिए पार्सर लिखने के लिए और अधिक समय की जरूरत नहीं है। यदि आप हैं, आप

    http://code.google.com/p/qobjc/

  • कर सकते हैं :) मैं C++ फाउंडेशन फ्रेमवर्क के बुनियादी कार्यशीलता लिखा था। इस मामले में, आपको मैन्युअल रूप से पोर्ट करने की आवश्यकता है; आपका कोड सी ++ पर होगा लेकिन यह उद्देश्य-सी पर होगा। यह पुस्तकालय आईफोन पर काम किया।

    http://code.google.com/p/dcocoa/

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