2008-09-08 7 views
29

मैं अपने सी ++ प्रोग्राम से पायथन स्क्रिप्ट फाइलों को कॉल करना चाहता हूं।वितरण के लिए एक सी ++ प्रोग्राम से पाइथन को कॉल करना

मुझे यकीन नहीं है कि जिन लोगों को मैं वितरित करूंगा, उनके पास पाइथन स्थापित होगा।

असल में मैं एक .lib फ़ाइल की तलाश में हूं जिसका उपयोग मैं कर सकता हूं जिसमें अपाचे जैसे वितरण लाइसेंस है।

उत्तर

23

बूस्ट में एक पायथन इंटरफ़ेस लाइब्रेरी है जो आपकी मदद कर सकती है।

Boost.Python

2

अपने सी अंदर अजगर दुभाषिया एम्बेड करने ++ अनुप्रयोग आप अपने आवेदन रन अजगर स्क्रिप्ट का उपयोग अजगर प्रोग्राम को चलाने करने देगा। यह उन स्क्रिप्ट के लिए आपके एप्लिकेशन में C++ फ़ंक्शंस को कॉल करना आसान बनाता है। यदि आप यही चाहते हैं तो पहले उल्लिखित बूस्ट लाइब्रेरी वह हो सकती है जिसे आप लिंक बनाना आसान बनाना चाहते हैं। अतीत में मैंने सी ++ कोड में पाइथन इंटरफेस उत्पन्न करने के लिए SWIG का उपयोग किया है। यह आपके प्रश्न से स्पष्ट नहीं था कि क्या आप पाइथन स्क्रिप्ट को अपने सी ++ प्रोग्राम को कॉल करना चाहते थे या फिर आप चाहते हैं कि सी ++ पायथन को कॉल करें।

कई पाइथन फ़ंक्शन मॉड्यूल का उपयोग करते हैं जो पायथन दुभाषिया में नहीं बनाए जाते हैं। यदि आपकी पाइथन स्क्रिप्ट इन फ़ंक्शंस को कॉल करती हैं तो आपको या तो अपने उपयोगकर्ताओं को पायथन इंस्टॉल करना होगा या आपके एप्लिकेशन के साथ पायथन रनटाइम फाइलों को शामिल करना होगा। यह आपके द्वारा पाइथन स्क्रिप्ट में आपके द्वारा आयात किए जाने वाले मॉड्यूल पर निर्भर करेगा।

2

बूस्ट शायद सबसे अच्छा विकल्प है, हालांकि यदि आप कुछ और अधिक स्टैंडअलोन चाहते हैं, और यदि यह विंडोज के साथ उपयोग के लिए है (जो संभव है कि वे लोग हैं जो कम से कम पाइथन स्थापित होने की संभावना है), तो आप COM ऑब्जेक्ट्स के लिए उपयुक्त प्रविष्टि बिंदुओं के साथ एक DLL बनाने के लिए py2exe का उपयोग कर सकते हैं। फिर आप COM के माध्यम से लाइब्रेरी के साथ इंटरफ़ेस कर सकते हैं। (जाहिर है यह क्रॉस-प्लेटफार्म समाधान के रूप में बिल्कुल उपयोगी नहीं है)।

+0

क्यों लोगों विंडोज अधिक अजगर स्थापित किया है की संभावना चल रहे हैं? –

50

मैं अपने सी ++ प्रोग्राम से पायथन स्क्रिप्ट फाइलों को कॉल करना चाहता हूं।

इसका मतलब है कि आप अपने सी ++ एप्लिकेशन में पायथन को एम्बेड करना चाहते हैं। के रूप में Embedding Python in Another Application में उल्लेख किया है:

एम्बेडिंग अजगर यह विस्तार करने के लिए समान है, लेकिन काफी नहीं। इसके बजाय, कुछ के कुछ हिस्सों - अंतर यह है कि जब आप अजगर का विस्तार, अनुप्रयोग का मुख्य कार्यक्रम अभी भी अजगर दुभाषिया, अगर आप अजगर एम्बेड करते हैं, मुख्य कार्यक्रम कुछ भी नहीं अजगर के साथ क्या करना पड़ सकता है, जबकि है एप्लिकेशन कभी-कभी पाइथन कुछ पायथन कोड चलाने के लिए दुभाषिया को कॉल करता है।

मेरा सुझाव है कि आप पहले Embedding Python in Another Application पर जाएं।

: फिर निम्न उदाहरण

  1. Embedding Python in C/C++: Part I

  2. Embedding Python in C/C++: Part II

  3. Embedding Python in Multi-Threaded C/C++ Applications

आप Boost.Python चाहें, तो आप निम्नलिखित लिंक पर जाकर कर सकते हैं उल्लेख

  1. Embedding Python with Boost.Python Part 1
+0

यह 2008 के बाद के बाद किसी भी विजुअल स्टूडियो संस्करण के साथ काम नहीं करता है, क्योंकि विंडोज़ के लिए क्या पाइथन संकलित है। यह संभव हो सकता है यदि आप बाद में रनटाइम का उपयोग करके पाइथन के संस्करण को संकलित करने में सक्षम हैं या सक्षम हैं। मैंने बस बिना किसी सफलता के बनाम बनाम 2013 का उपयोग करके अजगर संकलन करने की कोशिश कर एक दिन बिताया। – David

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