2011-06-01 18 views
6

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

अब मैं DLL के प्रबंधित DLL की अनुमति देते हैं करने के लिए प्लगइन (मैं के बारे में सी # ज्यादातर में परवाह) देना चाहते हैं। मैं सी # प्लगइन डीएलएल में एक ही जादू करना चाहता हूं।

मैं गतिशील रूप से इन dll के लोड कर सकते हैं, कुछ मैं कैसे लगता है Win32 के LoadLibrary जो मैं वर्तमान में उपयोग कर रहा हूँ एक प्रबंधित DLL के साथ खुश होने जा रहा है। संकलन/लिंक समय पर इन पुस्तकालयों तक पहुंच नहीं होगी, वे उपयोगकर्ता से आते हैं।

बाद मैं पुस्तकालय लोड मिलता है, दुर्भाग्य से मैं कॉम मेरे भविष्य में जिस तरह से व्युत्पन्न कार्यों कॉल करने के लिए के रूप में संदेह है। संभवतः मैं सीएलआई/सी ++ रैपर का उपयोग कर रहा हूं जिसके बारे में मैं पढ़ रहा हूं लेकिन मैं यहां बहुत अनुभवहीन हूं और उपयुक्त लेखों के किसी भी सलाह या लिंक की सराहना करता हूं।

उत्तर

2

पर इस लेख पर एक नज़र यह एक C++/CLI परियोजना है कि अपने सी # वर्गों को होस्ट करता है और अपने सी ++ परियोजना में एक पुल के रूप में उपयोग किया जाएगा बनाने करने का एक और तरीका है लो। इस दृष्टिकोण को

कुछ और लिंक:

नवीनतम लिंक पुल

+0

क्या मुझे अभी भी अप्रबंधित प्रक्रिया में सीएलआर शुरू करना होगा (उपरोक्त अल 38 9 1 की प्रतिक्रिया में लिंक के अनुसार) इस ब्रिज डीएलएल को लोड करने के लिए? – AlwaysTraining

+0

वास्तव में नहीं। मेरी पोस्ट में दूसरा लिंक देखें –

2

आप जो करना चाहते हैं वह मूल रूप से आपकी प्रक्रिया में सीएलआर का एक उदाहरण शुरू होता है। CLR hosting

+1

महान संदर्भ (+1) – Mike

+0

लिंक अब टूट गया है। – tMJ

0

यहाँ के लिए सरल स्रोत कोड कुछ स्लाइडों का वर्णन कर रहे हैं है मेरी उपाय।

https://docs.google.com/presentation/pub?id=1YoJRGnveh4By7ym4GL19L7OzYOFORZQB6RgJEPVfFb8&start=false&loop=false&delayms=3000

मेरे समाधान एक Win32 प्लगइन dll के लिए किया गया था, सामान्य उपायों (LoadLibrary) कि मिश्रित C ​​++/CLI dll, जो शुद्ध प्रबंधित सी # कोड के लिए लिंक के लिए लिंक के माध्यम से भरी हुई। मैंने बॉयलर प्लेट के एलओटी का उपयोग करके दोनों तरीकों से होने की अनुमति दी, और पडू द्वारा दिए गए लिंक के आधार पर एक डबल सी ++/क्ली ब्रिज पैटर्न। विवरण काफी जटिल थे, लेकिन अंत एपीआई उपयोगकर्ता का काम बहुत आसान है और यह मेरा लक्ष्य था। प्रबंधित प्लगइन ऑब्जेक्ट लेखक बस किसी ऑब्जेक्ट से निकलता है, और सबकुछ बस काम करता है।

अनिवार्य रूप से मैं एक पैटर्न है कि "मिश्रित मोड छद्म विरासत" अब मेरी # ग वस्तुओं ग में एक आधार वर्ग से निकाले जाते हैं ++ प्रदान करता है बनाया है।

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