在初始化之后没有卸载c#dll

时间:2015-02-26 02:14:13

标签: c# c++ .net dll

我使用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吗?

0 个答案:

没有答案