2010-05-23 12 views
5
  • अगर मैं उपयोग कर सकते हैं a library मैं सोच रहा था - सी ++ में लिखा - # सी
  • समस्या
  • कि लाइब्रेरी का अपना संरचनाओं और कक्षाओं .. मैं कर सकेंगे है इसे सी # में प्रयोग करें?

धन्यवादसी # और C++ लाइब्रेरी

संपादित
यह पुस्तकालय है खुला स्रोत ..
तो मेरे आवश्यकताओं अगर सी ++ कोड में कुछ खास जरूरत है, मैं सक्षम हो जाएगा यह कर ...

उत्तर

3

आप सीधे प्रबंधित कोड में सी ++ कक्षाओं का उपयोग नहीं कर सकते हैं। मुख्य समस्याएं सी ++ कोड द्वारा उपयोग की जाने वाली वही मेमोरी आवंटक का उपयोग करने में सक्षम नहीं हैं और आसानी से कन्स्ट्रक्टर और विनाशक का आह्वान करने में सक्षम नहीं हैं। एक माइक्रोसॉफ्ट कर्मचारी ने यह दिखाने के लिए a blog post पोस्ट किया कि यह असंभव नहीं है। मैं ऐसा करने की सिफारिश नहीं करता।

COM एक समाधान है लेकिन हमेशा अनिवार्य रूप से काफी बड़े पुनर्लेखन और अच्छे COM प्रोग्रामिंग कौशल की आवश्यकता होती है। सी ++/सीएलआई भाषा में managed class wrapper आमतौर पर सबसे अच्छा समाधान होता है। आप उन रैपर वर्गों को स्वत: उत्पन्न करने पर विचार करने के लिए SWIG tool पर एक झलक ले सकते हैं। सावधान रहें कि यह उपकरण आसानी से हल होने से अधिक समस्याएं पैदा कर सकता है।

3

रहे हैं दो तरह से दोनों एक एडाप्टर (जो नेट वर्गों के लिए सी ++ कक्षाएं नक्शे) का उपयोग:

  • C++/CLI
  • कॉम

कॉम के माध्यम से जा रहा पूर्व बचा जाता है, और सी ++ कोड के ज्यादा सक्षम हो सकता है सिर्फ सही स्विच के साथ संकलित की।

अतिरिक्त: सिद्धांत में पी/आमंत्रण संभव हो सकता है, लेकिन सभी सी ++ अर्थशास्त्र खो जाएंगे, आपको मैन्युअल रूप से सी ++ ऑब्जेक्ट आजीवन को संभालने की आवश्यकता होगी (और उदाहरण संदर्भ IntPtr)। इसके अलावा आपको उलझन वाले नामों को कॉल करने की आवश्यकता होगी ...

3

एक और विकल्प सी ++/सीएलआई में एक प्रबंधित रैपर लिखना है। मैं पी/Invoke का उपयोग करने के बजाय पसंद करते हैं।

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