आप .NET COM घटकों के साथ पंजीकरण-मुक्त COM का उपयोग कर सकते हैं - here देखें।
एक और विकल्प एक पुल के रूप में सी ++/सीएलआई का उपयोग करना है। लोग प्रबंधित कोड पर बेनकाब करने के लिए अप्रबंधित एपीआई को लपेटने के लिए इसका उपयोग करने से अधिक परिचित हैं, लेकिन यह वास्तव में दोनों तरीकों से काम करता है - /clr
के साथ संकलित करना संभव है, और फिर भी .dll
असेंबली सादे अप्रबंधित निर्यात के साथ असेंबली का उत्पादन करें, जिसे अप्रबंधित कोड से बुलाया जा सकता है हमेशा की तरह। यहाँ एक बहुत ही सरल उदाहरण है कि को उजागर करता है System::String::ToUpper
कि जिस तरह से है:
// compile with cl.exe /clr /LD wrapper.cpp ole32.lib
#include <windows.h>
__declspec(dllexport)
wchar_t* ToUpper(const wchar_t* wcs)
{
System::String^ s = gcnew System::String(wcs);
array<wchar_t>^ chars = s->ToUpper()->ToCharArray();
size_t size = chars->Length * 2;
wchar_t* dst = (wchar_t*)CoTaskMemAlloc(size + 2);
pin_ptr<wchar_t> src = &chars[0];
memcpy(dst, src, size);
dst[chars->Length] = 0;
return dst;
}
यह उत्पादन करेगा wrapper.dll
- संकर कामयाब/अप्रबंधित विधानसभा - और एक निर्यात पुस्तकालय wrapper.lib
। बाद के एक शुद्ध देशी आवेदन में इस प्रकार किया जा सकता है:
// compile with cl.exe test.cpp ole32.lib wrapper.lib
// note, no /clr
#include <stdio.h>
#include <windows.h>
wchar_t* ToUpper(const wchar_t* wcs);
int main()
{
wchar_t* s = ToUpper(L"foo");
wprintf(L"%s", s);
CoTaskMemFree(s);
}
अभ्यास यह फोन करने की प्रक्रिया में CLR क्रम लोड होगा (जब तक यह पहले से ही वहाँ से भरी हुई है) और पारदर्शी प्रबंधित कोड के मूल कोड से प्रेषण में - सब जादू सी ++/सीएलआई कंपाइलर द्वारा किया जाता है।
स्रोत
2009-12-01 01:26:06
यह Regasm.exe/codebase विकल्प के साथ जीएसी में होना आवश्यक नहीं है। –