簡體   English   中英

Static 嘗試將另一個接口添加到 COM 時出現轉換錯誤 C2440 object

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM