2009-09-30 19 views
6

में डीएल द्वारा निर्यात किए गए सी ++ वर्गों का उपयोग कैसे करें Win32 के लिए डेल्फी में Win32 dll द्वारा निर्यात किए गए C++ कक्षाओं का उपयोग करने का कोई तरीका है? क्या समान चीजों को हासिल करने के अन्य तरीके हैं (COM, .NET, ...)?डेल्फी

उत्तर

11

आप कक्षा आयात नहीं कर सकते हैं। आप केवल फ़ंक्शन आयात कर सकते हैं। Rudy Velthuis has written at length on the topic. यद्यपि आप सीधे एक निर्यात सी ++ वर्ग उपयोग नहीं कर सकते, वह तकनीक के एक जोड़े का वर्णन करता है एक ही प्रभाव को प्राप्त करने:

  • "फ़्लैट" वस्तु है, तो फोन करने की ओर कोई वस्तु अब और है, बस ऑब्जेक्ट के तरीकों को लपेटने वाले कार्यों की श्रृंखला के लिए अन्य पैरामीटर के साथ डीएलएल को पास किया गया एक पॉइंटर। रैपर लिखना बहुत आसान है, हालांकि यह थकाऊ हो सकता है।

  • शुद्ध आभासी कक्षाओं का उपयोग करें। विंडोज सी ++ कंपाइलर्स और डेल्फी आमतौर पर वही वीएमटी लेआउट होते हैं, इसलिए यदि सी ++ वर्ग को शुद्ध वर्चुअल विधियों की सूची द्वारा वर्णित किया जा सकता है, तो आप समकक्ष डेल्फी घोषणा बना सकते हैं, डीएलएल द्वारा ऑब्जेक्ट पॉइंटर द्वारा लौटाए गए कुछ प्रकार के कास्टिंग करें, और आगे बढ़ो।

लेख में दोनों तरीकों के पूर्ण उदाहरण दिए गए हैं।

4

आप डीएलएल से निर्यात किए गए सी ++ वर्गों का उपयोग नहीं कर सकते हैं, जहां तक ​​मुझे डेल्फी में पता है; आप सी कार्यों का उपयोग कर सकते हैं और आप डेल्फी में COM कक्षाएं आयात कर सकते हैं।