静态转换错误C2440尝试向COM对象添加另一个接口时

时间:2017-08-03 18:24:22

标签: c++ visual-c++ interface com

我试图通过包含另一个名为INvRtrProtocolEx3Itf的接口向COM对象添加一些功能。但是我在编译时遇到了错误。我已经研究了错误代码,并且该页面提供了一些examples错误以及如何修复错误但没有显示使用COM_INTERFACE_ENTRY方法的示例。

我在这里找到了类似的问题QUESTION 1QUESTION 2,但它们都引用了BEGIN_MESSAGE_MAP错误,而不是BEGIN_COM_MAP错误......

我是COM的新手,但我正在开发一个广泛使用它的项目。我正在使用另一个COM对象作为参考,使用我想要添加的接口,但现在我被困在哪里修复此错误。 如何获取COM对象进行编译或在哪里可以解决问题?

这是代码

BEGIN_COM_MAP(CNvRtrProtocolXxxImpl)
    COM_INTERFACE_ENTRY(INvRtrProtocolXxxItf)
    COM_INTERFACE_ENTRY(INvRtrProtocol4Itf)
    COM_INTERFACE_ENTRY(INvComponent3Itf)
    //added the following line to add another interface
    COM_INTERFACE_ENTRY(INvRtrProtocolEx3Itf) //throws error 1 (C2440)
    COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP() //throws error 2 (C2440)

错误1

error C2440: 'static_cast': cannot convert from 'CNvRtrProtocolXxxImpl::_ComMapClass *' to 'INvRtrProtocolEx3Itf *'

错误2

error C2440: 'initializing': cannot convert from 'ATL::_ATL_CREATORARGFUNC (__cdecl *)' to 'DWORD_PTR'

0 个答案:

没有答案