2010-03-01 13 views
5

क्या पी/शुद्ध सी ++ लाइब्रेरी को आमंत्रित करना संभव है, या क्या इसे सी में लपेटना है?पी/पूरी तरह से सी ++ लाइब्रेरी को आमंत्रित करें?

+0

इस कोडप्रोजेक्ट आलेख को देखें: http://www.codeproject.com/KB/mcpp/usingcppdll.aspx – dalle

उत्तर

2

सी ++ पुस्तकालयों को पी/बुलाया जा सकता है, लेकिन आपको उलझन विधि नामों ("@ 0! वर्गनाम @ वर्गनाम @ zz" जैसे नाम खोजने के लिए "निर्भर करता है" का उपयोग करना होगा और उदाहरण के लिए विधियों का उपयोग "यहकॉल" पी/आवेषण में सम्मेलन बुलावा और उदाहरण के संदर्भ को पहले तर्क के रूप में पास करें (आप एक इंटीपीआरटी के भीतर कन्स्ट्रक्टर के परिणाम को स्टोर कर सकते हैं)।

+5

एक और विकल्प सी ++/सीएलआई है। –

+3

यह भयानक सलाह है। यहां तक ​​कि यदि यह तकनीकी रूप से संभव है, तो भी आप सी ++ कक्षाओं में पी/इनवॉक करने की कोशिश कर रहे कई कई समस्याओं में भाग लेंगे। उदाहरण के लिए, कन्स्ट्रक्टर और विनाशकों को ठीक से नहीं कहा जाएगा, .NET मेमोरी हैंडलिंग C++ 'new' और 'delete' के साथ संगत नहीं है, और इसी तरह। सी ++/सीएलआई एक बहुत बेहतर विचार है। –

+0

यह उत्तर कैसे हो सकता है ?! –

1

एक "शुद्ध" सी ++ लाइब्रेरी का नाम कंपाइलर द्वारा उलझा हुआ होगा, इसलिए पी/आमंत्रण घोषणा को सही करना मुश्किल होगा। और एक सी विधि शुरुआत में अंडरस्कोर हो जाती है, जो सी ++ में नहीं हो सकती है। और एक सी ++ विधि को इस पैरामीटर को पहले पैरामीटर के रूप में आवश्यक है, तो आपको इसे स्वयं देना होगा।

मुझे लगता है कि आपको अपनी सी ++ एपीआई को तरीकों की सी-संगत श्रृंखला में लपेटने की आवश्यकता है।

+0

किसी ऑब्जेक्ट का केवल एक उदाहरण विधि एक अंतर्निहित 'यह' लेता है। –

+0

बेशक, लेकिन मैं केवल स्थिर तरीकों का उपयोग कर सी ++ लाइब्रेरी की कल्पना नहीं कर सकता। – Timores

+0

सी ++ गैर-सदस्य विधियों को भी अनुमति देता है, आपको पता है। – jalf

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