Exception в MFC тесте
От: Dmitry G. Bogomolov  
Дата: 15.05.03 10:58
Оценка:
Обнаружен странный exception при использовании COM-объекта.
Причем возникает он только в MFC-тесте, в консольном тесте
его нет. При малейшей попытке создать любой интерфейс (даже
не вызывая его методы) по закрытии программы из CoUninitialize
вылезает:

Invalid argument
HeapFree, HANDLE: 0x02421FE0
Bad handle

Не подскажет ли кто-нибудь, с чем это связано. Интерфейс
создается так:

#import "PH600EISDNUI.tlb"
using namespace PH600EISDNUILib;
.....

IPH600InfoPtr info_ptr(_uuidof(PH600EISDNInfo));
...
info_ptr = NULL;

Среда — W2K, VC6.0. COM-сервер реализован на ATL в виде
dll-ки (inproc), подлинковывает другую (не COM) dll-ку.

Заранее благодарен за любые разъяснения и намеки.
Re: Exception в MFC тесте
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 15.05.03 11:16
Оценка:
Здравствуйте, Dmitry G. Bogomolov, Вы писали:

[]

DGB>Заранее благодарен за любые разъяснения и намеки.


Намек простой: почему-то я не вижу кода в сообщении...
Re[2]: Exception в MFC тесте
От: Dmitry G. Bogomolov  
Дата: 15.05.03 11:28
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Намек простой: почему-то я не вижу кода в сообщении...


Привожу код работающего консольного клиента

#include "stdafx.h"
#import "PH600EISDNUI.tlb"
using namespace PH600EISDNUILib;

int main(int argc, char* argv[])
{
    CoInitialize(NULL);

    PH600EISDNUILib::IPH600DevicePtr dev1(_uuidof(PH600EISDNDevice));
    dev1 = NULL;

    CoUninitialize();
    return 0;
}


Привожу код неработающего клиента


//........

BOOL CTest2App::InitInstance()
{
//........
    CoInitialize(NULL);
    CSingleDocTemplate* pDocTemplate;
//........
}

int CTest2App::ExitInstance() 
{
    // TODO: Add your specialized code here and/or call the base class
    CoUninitialize();
    return CWinApp::ExitInstance();
}

//........



#import    "PH600EISDNUI.tlb"
using namespace PH600EISDNUILib;

class CTest2Doc : public CDocument
{
//........
    IPH600DevicePtr m_pCurrDev;
//........
};

CTest2Doc::CTest2Doc()
    : m_pCurrDev(_uuidof(PH600EISDNDevice))
{
    // TODO: add one-time construction code here

}

CTest2Doc::~CTest2Doc()
{
    m_pCurrDev = NULL;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.