के माध्यम से एक सी ++ फ़ंक्शंस को कॉल करना मेरे पास एक परिदृश्य है जहां मेरे पास C++ कक्षाओं में कुछ फ़ंक्शन हैं और मैं उन्हें एक पायथन स्क्रिप्ट का उपयोग करके कॉल करने में सक्षम होना चाहता हूं। मान लीजिए कि मैं एक समारोह हैएक पायथन स्क्रिप्ट
void greet(_msg);
std::cout >> _msg >> std::endl;
मैं इसे कहते हैं सक्षम होना चाहते हैं एक कस्टम अजगर कॉल गर्त और इसका उपयोग करने के लिए तर्क पारित, उदाहरण के लिए
saySomething("Hello")
एक .py फ़ाइल मैं यह चाहते हैं चलो बधाई समारोह को कॉल करने और एक तर्क के रूप में "हैलो" पास करने के लिए।
मुझे पता है कि यह एक विषय है जिस पर चर्चा की गई है, और मैंने सी ++ में पायथन को एम्बेड करने पर शोध का एक हिस्सा किया है, मैंने मानक पायथन/सी एपीआई का उपयोग करके एक पायथन लिपि से मूल्यों को पढ़ने में कामयाब रहा है सी ++ से पायथन में एक फ़ंक्शन और इसके लिए तर्क पारित करें, लेकिन मुझे इस विशिष्ट परिणाम को प्राप्त करने के तरीके के बारे में मेरा सिर नहीं मिल रहा है।
मैंने सीटीपीएस और विभिन्न रैपिन लाइब्रेरी जैसे बूस्ट: पायथन या स्विग पर एक नज़र डाली है, लेकिन मुझे यह समझ में नहीं आ रहा है कि वे मुझे कौन सी डिग्री प्राप्त करना चाहते हैं, जो मुझे चाहिए।
"सी ++ से पायथन में एक फ़ंक्शन चलाएं" इसका मतलब क्या है? यदि आप पाइथन एपीआई के रूप में सी/सी ++ को मास्क करना चाहते हैं तो आप सी/सी ++ के लिए पाइथन बाइंडिंग के मूल नियमों को लागू कर सकते हैं, तो बूस्ट :: पायथन लाइब्रेरी भी है जो सी ++ कोड से शुरू होने वाले पायथन एपीआई लिखते समय संभालना आसान हो सकता है। – user1797612
क्षमा करें यह स्पष्ट नहीं था - मैं जो चाहता हूं वह एक पाइथन स्क्रिप्ट प्राप्त करने में सक्षम है जो सी ++ वर्ग के विशिष्ट कार्य को तर्क देने में सक्षम है। जीयूआई की तरह कम या ज्यादा, लेकिन बटन के बजाय पायथन स्क्रिप्ट के माध्यम से किया जाता है। – leoncvlt
ताकि आप इस http://docs.python.org/3.2/extending/extending.html, या boost :: पायथन (शायद आसान) की तलाश में हैं, और इस प्रश्न का उत्तर भी एक अच्छा प्रारंभिक बिंदु हो सकता है http: //stackoverflow.com/questions/276761/exposing-ac-api-to-python। वैसे भी, आप सी ++ कोड के लिए पायथन एपीआई उत्पन्न करना चाहते हैं, यही वह है, केवल आधिकारिक मार्गदर्शिका का पालन करें या इस libs का उपयोग करें। – user1797612