实现多接口的有关问题[dual 双接口],分不够可以再加

实现多接口的问题[dual 双接口],在线等,分不够可以再加
接口类实现如下,对应的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 '

------解决方案--------------------
这样是正确的,请检查