Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
初始化后未卸载c#dll_C#_C++_.net_Dll - Fatal编程技术网

初始化后未卸载c#dll

初始化后未卸载c#dll,c#,c++,.net,dll,C#,C++,.net,Dll,我使用CoInitialize()和CoCreateInstance()加载了c#dll 调用c#函数后,也称为conInitialize()函数 C#dll已在regasm.exe中注册 reg_asm.exe /tlb SampleDll.dll 在C++中,我加载如下: ISampleDll* instance_; HRESULT hrSample = CoInitialize(NULL); if (FAILED(hrSample)) { return 0; } CLSID cl

我使用CoInitialize()和CoCreateInstance()加载了c#dll

调用c#函数后,也称为conInitialize()函数

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();
}
ISampleDll*实例;
HRESULT hrSample=CoInitialize(NULL);
如果(失败(hrSample)){
返回0;
}
CLSID-cls;
如果(!successed(CLSIDFromProgID(L“SampleDll.Class1”,&cls))){
coninitialize();
返回0;
}
hrSample=CoCreateInstance(cls,NULL,CLSCTX\u INPROC\u服务器,
IID_是示例DLL,重新解释强制转换(&instance_));
如果(S_OK!=hr样本){
返回0;
}
如果(成功(hrSample)){
if(实例!=NULL){
实例->发布();
实例=NULL;
}
coninitialize();
}
我发现调用coninitialize()后,也无法卸载c#dll。 调用CoCreateInstance()后,我的程序的内存会增加

如何从内存中卸载c#dll?
函数能否卸载c#dll?

取决于。尽管您已释放.NET COM对象并满足COM引用计数的要求,.NET引用计数可能仍在使用中。该对象是单体对象吗?它会创建其他对象吗?这些其他对象正在引用它。这些.NET对象是否充当服务器(不一定与COM相关)?能否发布
SampleDll.Class1
的代码?