Вот к примеру имею класс:
class ATL_NO_VTABLE CIStorage :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CIStorage, &CLSID_DiagReport>,
public IDispatchImpl<ICIStorage, &IID_ICIStorage, &LIBID_DiagReportLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
...
...
IFACEMETHODIMP ( // Создает объект, который позволит нам работать с "IStorage interface"
_Out_ CIStorage **pCIStorage,
_Out_ BOOL *bResult = 0
);
CreateObjectStorage предназначен для создания и возврата в параметре opIStorage экземпляра объекта класса.
В idl интерфейс представлен как:
[ object,
uuid( C002768D-287A-4BC8-B098-CDFC74BA9A16 ),
dual,
helpstring( "IStorage Interface" ),
pointer_default(unique)
]
interface ICIStorage : IDispatch {
[ id(0),
helpstring( "Create object foe work with IStorage interface" )
] HRESULT CreateObjectStorage(
[out] CIStorage **pCIStorage,
[out, retval] BOOL *bResult
);
Но idl компилируется с ошибкой:
Error 1 error MIDL2025: syntax error : expecting a type specification near "CIStorage" ...
Как подружить MIDL с CIStorage