2008-10-01 10 views

उत्तर

1

नहीं। आप केवल सी # प्रोग्राम से पूर्ण .dll का उपयोग कर सकते हैं।

6

सीधे नहीं। आप एक सी ++/सीएलआई असेंबली बना सकते हैं जो lib का उपभोग करता है और उसके बाद उसे सी # से एक्सेस करता है, या आप lib को DLL के रूप में लपेट सकते हैं।

8

बहुत सारे तरीके हैं। एमएसडीएन में "इंटरऑप" के बारे में पढ़ें ..

एक तरीका डीएलएल के रूप में lib को बेनकाब करना है, और फिर इन कार्यों को सी # प्रोजेक्ट से कॉल करने के लिए पिनवोक का उपयोग करना है। यह आपको सी-स्टाइल इंटरफ़ेस तक सीमित करता है, हालांकि।

यदि आपका इंटरफ़ेस अधिक जटिल है (उदा। ऑब्जेक्ट उन्मुख) तो आप एक सी ++/सीएलआई परत बना सकते हैं जो lib की कक्षा संरचना को आपके सी # प्रोग्राम में उजागर करेगी। इसका मतलब है कि आपको एक प्रबंधित सी ++ (या सी ++/सीएलआई जैसा कि इसे अब कहा जाता है) प्रोजेक्ट बनाना होगा; फिर प्रबंधित कोड में एक इंटरफ़ेस डिज़ाइन करें जिसे मूल C++ (यानी आपकी lib) पर कॉल द्वारा कार्यान्वित किया जाएगा।

ऐसा करने का एक और तरीका एक COM इंटरफ़ेस के साथ अपनी lib को लपेटकर है। लेकिन COM का दर्द है, इसलिए मैं नहीं ...

2

पहले से ही इसे लपेटने का उत्तर दिया गया है लेकिन यहां एक example है। सौभाग्य!

3

आपको जिस सीटी/सी ++ लाइब्रेरी के साथ काम कर रहे हैं, उसके आसपास एक प्रबंधित रैपर (सी ++/सीएलआई) की आवश्यकता है।

आप किसी भी C++/CLI पुस्तक मैं सलाह देते हैं के लिए देख रहे हैं निशांत शिवकुमार के C++/CLI in Action

0

निर्भर करता है, तो आप इस परिदृश्य पर कोई सीमाएं क्या ज़रूरत है?

आप एक lib फ़ाइल है, तो यह पहली बार एक DLL फ़ाइल में संकलित करने के लिए, दूसरी बात कार्यों आप DLL इंटरफ़ेस में कॉल करने के लिए, और तीसरे, सी # देशी तरीकों का उपयोग कर उन्हें फोन चाहते उजागर संभव हो जाना चाहिए (एक नजर है पिनवोक.net पर इस बिट को कैसे करें)।

2

मैं swig पर एक नज़र डालेगा, हम अपने सी ++ एपीआई को अन्य भाषा प्लेटफ़ॉर्म पर बेनकाब करने के लिए हमारी परियोजना पर अच्छे प्रभाव के लिए इसका उपयोग करते हैं।

यह एक अच्छी तरह से बनाए रखा प्रोजेक्ट है जो प्रभावी रूप से आपके सी ++ लाइब्रेरी के चारों ओर एक पतली रैपर बनाता है जो सी # जैसे भाषाओं को सीधे आपके मूल कोड से संवाद करने की अनुमति दे सकता है - आपको गोंद कोड को लागू करने (और डीबग) करने की परेशानी को बचाता है।

0

आप एक lib का उपयोग नहीं कर सकते हैं, लेकिन दूसरों की तरह कहा, यदि आप इसे एक डीएल में लपेटते हैं तो आप इसका उपयोग कर सकते हैं।

बड़ा घूँट अपने उदारीकरण के शीर्ष लेख ले जा सकते हैं, और यह dll आप जिसके लिए आप तो सी # से एक PInvoke जो भी बड़ा घूँट द्वारा उत्पन्न की जाएगी साथ कहेंगे उत्पन्न कर सकते हैं अगर वे बहुत जटिल नहीं हैं।

यदि आपकी लाइब्रेरी जटिल है और संदर्भ में हर जगह स्मार्ट पॉइंटर्स गिना जाता है, तो आपको एक विकल्प मिलना चाहिए।

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