初始化后未卸载c#dll
我使用CoInitialize()和CoCreateInstance()加载了c#dll 调用c#函数后,也称为conInitialize()函数 C#dll已在regasm.exe中注册初始化后未卸载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
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
的代码?