Я пытаюсь улучшить свой клиентский код Lotus Notes:
Рабочая:
#import "...\IBM\Lotus\Notes\notes32.tlb" no_dual_interfaces raw_native_types
CComPtr<IDispatch> session_dispatch;
if(FAILED(session_dispatch.CoCreateInstance(_T("Notes.NotesSession"))))
...
NOTESSESSION *session = static_cast<NOTESSESSION *>(*&session_dispatch);
Это дает мне действительный NOTESSESSION
объект, который знает, что ему нужно пройти через IDispatch
, чтобы фактически вызывать методы.
Я нашел * пример кода в сети, который выглядит намного разумнее и предполагает более позднюю версию Notes:
#import "...\IBM\Lotus\Notes\domobj.tlb" raw_interfaces_only raw_native_types
CComPtr<Domino::ISession> notes;
if(FAILED(notes.CoCreateInstance(_T("Notes.NotesSession"))))
...
Однако это возвращает E_NOINTERFACE
. Поскольку другие утверждают, что схожий код работает, мне интересно, что здесь происходит, и смиренно спрашиваю, есть ли у кого-нибудь еще работающий код для создания экземпляра объекта Session и получения указателя рабочего интерфейса.