如何从C ++ / CLI配置/删除托管对象

时间:2013-05-17 10:47:10

标签: dll c++-cli idisposable

我正在开发一个本机C ++项目(/ clr enabled),它必须使用一些托管的,COM可见的C#DLL。一些托管对象实现了IDisposable,我想在它们上调用Dispose()。我怎么能这样做?

代码看起来像这样:

HRESULT hr = CoInitialize(NULL);
IManagedClassPtr pIObj(__uuidof(ManagedClass));
//do stuff with pIObj
...
//dispose of pIObj somehow
...
CoUninitialize();

1 个答案:

答案 0 :(得分:2)

首先,如果您不必,请不要使用COM。

C ++ / CLI旨在提供C ++和.Net语言之间的简单接口。

如果要在C ++ / CLI中创建.Net对象,只需将 gcnew 与引用变量一起使用即可。

。具有Dispose()方法的.Net类也将在C ++ / CLI中使用它。 The difference 是指如果在C ++ / CLI中声明ref类(.Net引用类),则~destructor将变为Dispose方法。
!finalizer是GC实际调用的内容。

所以无论如何,如果你用Dispose()方法创建一个.Net对象,你就可以这样做:

MyDisposable^ m = gcnew MyDisposable();
m->Dispose();