描述:
接口类实现如下,对应的idl修改正确。
class CImageCombine :
public IDispatchImpl<IImageCombine, &IID_IImageCombine, &LIBID_PRINTPREGENLib>,
public ISupportErrorInfo,
public CComObjectRoot,
public CComCoClass<CImageCombine,&CLSID_ImageCombine>,
public IDispatchImpl<IImageCombine2, &IID_IImageCombine2, &LIBID_PRINTPREGENLib>
{
public:
CImageCombine() {}
BEGIN_COM_MAP(CImageCombine)
COM_INTERFACE_ENTRY(IImageCombine)
COM_INTERFACE_ENTRY2(IDispatch,IImageCombine)
COM_INTERFACE_ENTRY(IImageCombine2)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
......
}
错误如下:
1>e:\dev project\pregen\devpregen\printpregen\imagecombine.h(27) : warning C4003: not enough actual parameters for macro 'COM_INTERFACE_ENTRY2'
1>e:\dev project\pregen\devpregen\printpregen\imagecombine.h(27) : error C2065: 'IDispatch,IImageCombine' : undeclared identifier
1>e:\dev project\pregen\devpregen\printpregen\imagecombine.h(27) : error C2061: syntax error : identifier 'IDispatch,IImageCombine'
1>e:\dev project\pregen\devpregen\printpregen\imagecombine.h(27) : error C2146: syntax error : missing '(' before identifier 'IDispatch,IImageCombine'
1>e:\dev project\pregen\devpregen\printpregen\imagecombine.h(27) : error C2552: 'ATL::_ATL_INTMAP_ENTRY::piid' : non-aggregates cannot be initialized with initializer list
1> 'const IID *' is not an array or class : Types which are not array or class types are not aggregate
1>e:\dev project\pregen\devpregen\printpregen\imagecombine.h(28) : error C2078: too many initializers
1>e:\dev project\pregen\devpregen\printpregen\imagecombine.h(29) : error C2440: 'initializing' : cannot convert from 'const _GUID *' to 'DWORD_PTR'
解决方案1:
这样是正确的,请检查