2012-04-26 3 views
6

पर कॉल कैसे करूं, मेरे पास एक C++ ऐप है जिसमें से मैं .NET (C#) विधियों को कॉल करना चाहता हूं। मैं C++/CLI का उपयोग करने जा रहा था, लेकिन यह केवल विंडोज़ पर समर्थित है।मैं सीई ++ से .NET को एक प्लेटफ़ॉर्म-स्वतंत्र तरीके से यथासंभव

चूंकि हम मैक का भी समर्थन करते हैं, इसलिए मैं सी ++ से .NET को कॉल करना चाहता हूं जो विंडोज और मैक (मोनो के साथ) दोनों पर काम करेगा।

ऐसा करने का सबसे अच्छा तरीका क्या है?

संपादित करें: मुझे यह जोड़ना चाहिए कि जिस सी # कोड को हम कॉल करना चाहते हैं वह हमारा नहीं है। हमारे पास इसमें कोई बदलाव करने का कोई तरीका नहीं है। सी ++ कोड, ज़ाहिर है, हमारा है।

+0

महान प्रश्न। मैं यह देखने के लिए उत्सुक हूं कि लोग क्या करते हैं। –

+0

मुझे आश्चर्य है, मैक/मोनो DCOM का समर्थन करता है? – wilx

+1

[Google के प्रोटोकॉल बफर] (https://developers.google.com/protocol-buffers/) प्लस सॉकेट का उपयोग करके आरपीसी अनुकरण करने का एक संभावित समाधान है। प्रोटोकॉल बफर में एक [.NET कार्यान्वयन] है (http://code.google.com/p/protobuf-net/)। – megabyte1024

उत्तर

1

सबसे आसान तरीका फ़ंक्शन पॉइंटर के माध्यम से कार्यक्षमता का पर्दाफाश करना है। .NET और मूल कोड दोनों एक फंक्शन पॉइंटर के रूप में सी/सी ++ कोड के साथ इंटरऑप कर सकते हैं। फंक्शन पॉइंटर्स उन सभी प्लेटफॉर्म पर समर्थित हैं जहां सी ++ कोड चलता है इसलिए इसे बिना किसी समझ के लिखा जा सकता है। नेट।

+0

+1: मुझे पता था कि आप इस सब पर होने जा रहे थे :) –

+0

धन्यवाद क्या आप मुझे कुछ अच्छे उदाहरण/ट्यूटोरियल पर इंगित कर सकते हैं? –

+0

@ एंड्रयूएस खोज में उपयोग करने के लिए शब्द "रिवर्स PInvoke" है। इस विषय पर कुछ लेख यहां दिए गए हैं http://msdn.microsoft.com/en-us/magazine/cc164193.aspx http://blogs.msdn.com/b/davidnotario/archive/2006/01/13/ 512436.aspx – JaredPar