1. Создаю в Delphi библиотеку типов TESTOBJECT. В ней создаю объект TEST и интерфейс ITEST. В интерфейсе ITEST создаю метод T().
2. Далее оаботаю в VC++6.0. Создаю мастером класс ITEST на основе созданной в Delphi библиотеки типов TESTOBJECT.tlb. Пишу код:
Код: Выделить всё
HRESULT hres;
hres=CoInitialize(NULL);
CLSID gdc,gdi;
ITEST *p;
//{A6A5385D-EE97-491D-9AFC-9AB42C3CFD73}
gdc.Data1 =0xA6A5385D;
gdc.Data2=0xEE97;
gdc.Data3=0x491D;
gdc.Data4 [0]=0x9A;
gdc.Data4 [1]=0xFC;
gdc.Data4 [2]=0x9A;
gdc.Data4 [3]=0xB4;
gdc.Data4 [4]=0x2C;
gdc.Data4 [5]=0x3C;
gdc.Data4 [6]=0xFD;
gdc.Data4 [7]=0x73;
//{2B1B3976-0DB2-45BA-9F0B-E6AD291012AD}
gdi.Data1 =0x2B1B3976;
gdi.Data2=0x0DB2;
gdi.Data3=0x45BA;
gdi.Data4 [0]=0x9F;
gdi.Data4 [1]=0x0B;
gdi.Data4 [2]=0xE6;
gdi.Data4 [3]=0xAD;
gdi.Data4 [4]=0x29;
gdi.Data4 [5]=0x10;
gdi.Data4 [6]=0x12;
gdi.Data4 [7]=0xAD;
tagVARIANT tvar;
tvar.boolVal = true;
hres=CoCreateInstance(gdc,NULL,1,gdi,(void**)&p);
if (hres!=S_OK)
{
MessageBox("ERROR");
}
else
{
((ITEST*)p)->T();
}
CoUninitialize();
CoCreateInstance отрабатывает без ошибок и возвращает адрес интерфейса. Спотыкаюсь на вызове метода. Склоняюсь к мысли, что некорректно создается класс на основе библиотеки типов. Большая просьба помочь разобраться начинающему изучать COM.