Re[2]: Не вызывается деструктор.
От: Vegost Россия  
Дата: 30.03.05 07:04
Оценка:
FinalRelease() — ведет себя так-же как и деструктор, т.е никак не вызывается.
Хотя в контроле (функция DllMain) часть связанная с DLL_PROCESS_DETACH
запускается


CComModule _Module;

BEGIN_OBJECT_MAP(ObjectMap)
OBJECT_ENTRY(CLSID_Alemar, CAlemar)
END_OBJECT_MAP()

/////////////////////////////////////////////////////////////////////////////
// DLL Entry Point

extern "C"
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
{
    if (dwReason == DLL_PROCESS_ATTACH)
    {
        _Module.Init(ObjectMap, hInstance, &LIBID_ALMRCTRLLib);
        DisableThreadLibraryCalls(hInstance);
    }
    else if (dwReason == DLL_PROCESS_DETACH)
    {

           _Module.Term();
    }
    return TRUE;    // ok
}


И внутри функции _Module.Term() вызывается Release() для каждого _ATL_OBJMAP_ENTRY
т.е. и для класса CAlemar тоже
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.