com组件的析构函数不调用
我写了一个com组件,继承关系如下
class ATL_NO_VTABLE CChatRoom :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CChatRoom, &CLSID_ChatRoom>,
public IConnectionPointContainerImpl<CChatRoom>,
public CProxy_IChatRoomEvents<CChatRoom>,
public IDispatchImpl<IChatRoom, &IID_IChatRoom, &LIBID_ATLBROWSERLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public CWindowImpl<CChatRoom,CWindow,CMyControlWinTraits>,
public IOleClientSite,
public IOleInPlaceSite,
public IDocHostUIHandler,
public IDocHostShowUI
组件有个窗口,窗口里嵌入ie浏览器组件。然后我在程序中创建上面的组件,组件的一切运行都正常,用断点跟踪,构造函数,finnalconstractor都能调用,但是组件的析构函数和finalrelease却调用不到。组件指针保留在std::map<std::string,CComPtr<IChatRoom> >中,我调用map的erase或者关闭窗口都无法触发析构函数或finalrelease,真是太奇怪了。请牛人指点一下,先谢谢了。