के बिना एक सी ++ कक्षा को पाइथन में कैसे बेनकाब करना है, मैं जानना चाहता हूं कि सी ++ कक्षा को पाइथन में बेनकाब करने का कोई तरीका है लेकिन इंटरमीडिएट साझा लाइब्रेरी के निर्माण के बिना।एक मॉड्यूल
यहां मेरा वांछनीय परिदृश्य है। उदाहरण के लिए मैं सी निम्नलिखित है ++ वर्ग:
class toto
{
public:
toto(int iValue1_, int iValue2_): iValue1(iValue1_), iValue2(iValue2_) {}
int Addition(void) const {if (!this) return 0; return iValue1 + iValue2;}
private:
int iValue1;
int iValue2;
};
मैं किसी भी तरह के क्रम paremter (args) के रूप में यह भेजने के लिए आपका PyObject * करने के लिए (या इसके intance) इस वर्ग को परिवर्तित करना चाहते हैं, उदाहरण के लिए PyObject_CallObject रहे हैं:
PyObject* PyObject_CallObject(PyObject* wrapperFunction, PyObject* args)
मेरी अजगर पक्ष में दूसरी ओर से, मैं एक wrapperFunction जो मेरे सी ++ वर्ग (या इसके उदाहरण) पैरामीटर के रूप में पर सूचक हो जाता होगा और वह अपने तरीकों कॉल या उसके गुण का उपयोग करता है:
def wrapper_function(cPlusPlusClass):
instance = cPlusPlusClass(4, 5)
result = instance.Addition()
जैसा कि आप देख सकते हैं, मुझे वास्तव में एक अलग साझा लाइब्रेरी नहीं है या बूस्ट पायथन द्वारा मॉड्यूल का निर्माण नहीं करना है। मुझे जो कुछ चाहिए वह एक सी ++ कोड को PyObject में बदलने और इसे पायथन पर भेजने का तरीका ढूंढना है। मुझे सी पायथन पुस्तकालयों, बूस्ट या एसडब्ल्यूआईजी द्वारा ऐसा करने का कोई तरीका नहीं मिल रहा है।
क्या आपके पास कोई विचार है? आपकी मदद के लिए धन्यवाद।
की उदाहरण मुझे यकीन है कि मैं वास्तव में आप क्या चाहते हैं समझ में नहीं कर रहा हूँ करने के लिए बात करने के लिए। Boost.Python 'boost :: पायथन :: ऑब्जेक्ट :: पीआरटी' है, जो 'PyObject *' देता है - क्या आप यही खोज रहे थे? –
मेरा मानना है कि सी/सी ++ को 'ctypes' के माध्यम से एक्सेस करना संभव है, लेकिन सी ++ कक्षा का पर्दाफाश करना मुश्किल हो सकता है। – Bakuriu
@PaulManta: उत्तर के लिए धन्यवाद। जो मैं चाहता हूं वह 3 चरणों में होता है: चरण 1: PyObject सूचक में एक C++ कक्षा को समाहित करें। चरण 2 इस पॉइंटर को एक अजगर समारोह में भेजें। चरण 3। पायथन में इस सी ++ पॉइंटर का उपयोग करके (यानी इसके तरीकों को बुलावा)। तो क्या आप कृपया अधिक व्यावहारिक हो सकते हैं और एक उदाहरण के अनुसार बता सकते हैं कि मैं ऑब्जेक्ट :: पीआरटी में सी ++ कोड कैसे समाहित कर सकता हूं? –