我正在尝试改善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才能实际调用方法。

我在网上发现了一些example code,它看起来更聪明,并且采用了更高的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对象并获得有效的接口(interface)指针。

最佳答案

对于domobj.tlb,应使用“Domino.NotesSession”而不是“Notes.NotesSession”。

10-04 20:06