[英]Static Casting Error C2440 When Attempting to Add another Interface to COM object
我試圖通過包含另一個名為 INvRtrProtocolEx3Itf 的接口向 COM object 添加一些功能。 但是我在編譯時遇到了錯誤。 我研究了錯誤代碼,該頁面提供了一些錯誤示例以及如何修復它,但沒有顯示使用COM_INTERFACE_ENTRY方法的示例。
我在這里發現了類似的問題, 問題 1和問題 2 ,但它們都指 BEGIN_MESSAGE_MAP 錯誤而不是 BEGIN_COM_MAP 錯誤......
我是 COM 的新手,但我正在開發一個廣泛使用它的項目。 我正在使用另一個 COM object 作為參考,它使用了我嘗試添加的接口,但現在我被困在 go 的位置以解決此錯誤。 我 go 如何讓 COM object 編譯,或者我可以在哪里尋找解決問題的方法?
這是代碼
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'
我對 _IDTExtensibility2 有同樣的問題。 就我而言, 此頁面上提出的解決方案解決了這個問題。
cd C:\Program Files (x86)\Common Files\Designer
regsvr32 MSADDNDR.dll
然后編譯神奇地起作用了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.