मैं आपको एक लेखक से अनियंत्रित हैक पर भरोसा करने के बजाय दस्तावेजबद्ध तरीके से ऐसा करने की सलाह दूंगा जो समर्थन प्रदान नहीं करता है। आइए इसे उदाहरण के साथ करें:
namespace Publics {
public class Class1 {
public static void Run() {
// Stuff...
}
}
}
अपनी परियोजना में एक नई सी ++/सीएलआई कक्षा पुस्तकालय जोड़ें। समाधान, जोड़ें, नई परियोजना पर राइट-क्लिक करें। "अन्य भाषाएं" नोड, विजुअल सी ++, सीएलआर खोलें, और "क्लास लाइब्रेरी" प्रोजेक्ट टेम्पलेट चुनें। नई परियोजना, गुण, सामान्य गुण, फ्रेमवर्क और संदर्भ राइट-क्लिक करें, नया संदर्भ जोड़ें बटन क्लिक करें। प्रोजेक्ट टैब से, सी # प्रोजेक्ट चुनें जिसका तरीका आप निर्यात करना चाहते हैं।
// TODO टिप्पणी के साथ पहले से बनाई गई खाली वर्ग हटाएँ और कोड के इस प्रकार लिखें:
extern "C" __declspec(dllexport)
void __stdcall Example()
{
Publics::Class1::Run();
}
अपने समाधान बनाएँ। जांचें कि उदाहरण फ़ंक्शन को DLL पर dumpbin.exe/निर्यात चलाकर निर्यात किया गया था।आप इस के लिए कुछ इसी तरह देखना चाहिए: नाम और फोन करने के सम्मेलन से परे
1 0 00001020 [email protected] = [email protected]
, अब आप भी विकल्प के बहुत सारे निर्यात समारोह tweak करने के लिए है। आप उदाहरण के लिए इस तरह समारोह लिख सकता है आप एक स्थिर विधि के बजाय एक उदाहरण विधि निर्यात करना चाहते हैं:
अगर आप इस विस्तृत बनाने जा रहे हैं
extern "C" __declspec(dllexport)
void __stdcall Example()
{
Publics::Class1^ obj = gcnew Publics::Class1;
obj->Run();
}
वगैरह, C++/CLI भाषा के साथ कुछ परिचित की आवश्यकता है । आखिरी लेकिन कम से कम नहीं, आपको यह भी पता चल जाएगा कि ग्सेके के आईएल रीराइटर काम करने के आपके मूल प्रयास में क्या गलत हुआ। यह अन्यथा सटीक उसी तकनीक का उपयोग करता है जो सी ++/सीएलआई कंपाइलर प्रबंधित विधि को निर्यात करने के लिए उपयोग करता है।
आप निर्यात किए गए कार्यों को देखने के लिए http://www.dependencywalker.com/ का भी उपयोग कर सकते हैं। मैंने पहले उपरोक्त दृष्टिकोण का उपयोग किया है, लेकिन यह बताना मुश्किल है कि अधिक जानकारी के बिना क्या गलत हो रहा है। क्या गलत हो रहा है डीबग करने के लिए शायद पूरी परियोजना को देखने की आवश्यकता होगी। –