我使用CoInitialize()和CoCreateInstance()加载了c#dll。
调用c#函数后,也称为CoUninitialize()函数。
C#dll已在regasm.exe中注册
reg_asm.exe /tlb SampleDll.dll
在c ++中,我加载如下。
ISampleDll* instance_;
HRESULT hrSample = CoInitialize(NULL);
if (FAILED(hrSample)) {
return 0;
}
CLSID cls;
if (!SUCCEEDED(CLSIDFromProgID(L"SampleDll.Class1", &cls))) {
CoUninitialize();
return 0;
}
hrSample = CoCreateInstance(cls, NULL, CLSCTX_INPROC_SERVER,
IID_ISampleDll, reinterpret_cast<void**>(&instance_));
if (S_OK != hrSample) {
return 0;
}
if (SUCCEEDED(hrSample)) {
if (instance_ != NULL) {
instance_->Release();
instance_ = NULL;
}
CoUninitialize();
}
我发现在调用CoUninitialize()之后,也无法卸载c#dll。 在调用CoCreateInstance()之后,我程序的内存增加了。
如何从内存中卸载c#dll? CoUninitialize()函数可以卸载c#dll吗?