2010-07-15 18 views
7

मैं लोगों को वाई भाषा में इसका उपयोग करने के लिए एक्स भाषा में लिखे गए मॉड्यूल के लिए रैपर लिखने के लिए देख रहा हूं। मैं ऐसे रैपर लिखने की मूल बातें जानना चाहता था। कहां से शुरू होता है? मेरा प्रश्न यहां libgnokii के लिए अधिक विशिष्ट है, मैं इसके लिए पाइथन बाइंडिंग कैसे लिखूं।लेखन बाइंडिंग और रैपर

उत्तर

7

आप इसे पढ़ने के साथ शुरू कर सकते हैं: extending python with c or c++ और फिर जब आप तय करते हैं कि यह बहुत अधिक परेशानी है, तो आप swig या संभवतः Boost.Python देख सकते हैं। ctypes भी उपयोगी हो सकता है।

मैंने सी ++ कक्षाओं के मैन्युअल रैपिंग किया है और मैंने स्विग का उपयोग किया है। स्विग का उपयोग करना बहुत आसान था, लेकिन अंत में मैं ऐसी चीजें करना चाहता था जो आसानी से नहीं किया गया था (या मैं यह पता लगाने के लिए बहुत आलसी था)। तो मैं मैन्युअल रैपिंग कर समाप्त हो गया। यह थोड़ा सा काम है लेकिन यदि आप थोड़ा सी जानते हैं, तो यह बहुत ही कामयाब है।

2

आप सी के साथ पायथन को विस्तारित करने के बारे में जानकारी के लिए here देखकर शुरू कर सकते हैं। आप शायद इस बारे में सोचना चाहेंगे कि libgnokii के एपीआई को Pythonic में कुछ समय में कैसे अनुवाद करना है। यदि आप बहुत काम नहीं करना चाहते हैं, तो आप केवल एक पतली आवरण लिख सकते हैं जो सभी gnokii एपीआई कॉल को पायथन कार्यों में अनुवाद करता है।

+0

SO चीजें बनाना पायथनिक का अर्थ पूरे लाइब्रेरी को स्क्रैच से मॉड्यूल के रूप में लिखना होगा? – tsudot

+2

नहीं, जरूरी नहीं। मैंने जो किया उससे एक उदाहरण: मेरे पास एक सी ++ कक्षा थी जिसे मुझे उस पर एक फ़ंक्शन का उपयोग करने से पहले ऑब्जेक्ट बनाने की आवश्यकता थी (इस मामले में, फ़ंक्शन स्थिर होना चाहिए था)। पाइथन मॉड्यूल उपयोगकर्ता को एक ही चरण में जाने के बजाय, मैंने अपने पायथन एक्सटेंशन में उस वर्ग के किसी ऑब्जेक्ट में बनाया है और फ़िथन मॉड्यूल में फ़ंक्शन के रूप में फ़ंक्शन को उजागर किया है, यह तथ्य छुपा रहा है कि यह एक वर्ग से संबंधित है, जो कि वास्तव में जरूरी नहीं है। तो, interfaces थोड़ा सा tidying की तरह। –

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