Доброгог времени суток.
Такая вот проблема возникла.
Я сам в СОМ не силен.
Стал собирать проект, не мой, в 2003 студии.
Есть такая строчка в коде
LPDISPATCH pDisp = NULL;
............... //получение pDisp
m_obj = pDisp;
...............
Comp::ICompInterPtr m_obj;
Так трабла в том что в 6 m_obj инициализировалась, а в 7 NULL.
Может что посоветует кто.
Здравствуйте, Uuuahaha, Вы писали:
U>Доброгог времени суток.
U>Такая вот проблема возникла.
U>Я сам в СОМ не силен.
U>Стал собирать проект, не мой, в 2003 студии.
U>Есть такая строчка в коде
U>U>LPDISPATCH pDisp = NULL;
U>............... //получение pDisp
U>m_obj = pDisp;
U>...............
U>
U>Comp::ICompInterPtr m_obj;
U>Так трабла в том что в 6 m_obj инициализировалась, а в 7 NULL.
U>Может что посоветует кто.
pDisp->QueryInterface( __uuidof(Comp::ICompInterPtr), (void**) &m_obj );
Здравствуйте, Константин Ленин, Вы писали:
КЛ>pDisp->QueryInterface( __uuidof(Comp::ICompInterPtr), (void**) &m_obj );
не помогло
А что такое ICompInterPtr? Это define или смарт-поинтер или ещё что-нибудь ? если смарт поинтер — пришли его operator =() или конструктор.
Здравствуйте, slava_529872, Вы писали:
_>А что такое ICompInterPtr? Это define или смарт-поинтер или ещё что-нибудь ? если смарт поинтер — пришли его operator =() или конструктор.
Труба дело, случайно заметил
Вообщем в 7 студии при импорте tlb файла, генерятся tli и tlh, как и в 6, но есть некоторое различие
в 6 так
//
// Smart pointer typedef declarations
//
_COM_SMARTPTR_TYPEDEF( ICompInter, __uuidof(IDispatch));
а в 7 так
//
// Smart pointer typedef declarations
//
_COM_SMARTPTR_TYPEDEF(ICompInter, __uuidof(ICompInter));
и изза этого не работал оператор.
Решил это дело на мой взгляд не совсем корректно
_com_ptr_t< _com_IIID< Comp::ICompInter, &__uuidof(IDispatch)> > m_obj;
вместо
Comp::ICompInterPtr m_obj;