簡體   English   中英

在ATL COM dll中調用的方法錯誤

[英]Wrong method called in ATL COM dll

我已經使用ATL創建了一個COM dll。 當我嘗試在非托管C ++中使用它時,我發現緩沖區溢出。 我目前正在使用一種名為OnInitIDA()的簡單方法進行測試,而我在其中所做的只是一個cout語句並返回。 當我運行此命令時,返回的HRESULT將為0,但是不會輸出我期望的行。 通過使用調試器的遍歷和逐步執行功能,我發現與其在調用時輸入OnInitIDA的代碼,還不如將其實際上輸入了另一個名為GetInclusionList的方法中。 一旦我在該方法中放置了一條語句,並且在應用程序運行時,該行就被打印掉了。 有誰知道為什么會調用錯誤的方法?

如果有幫助,我的代碼已發布在這里: https : //docs.google.com/open?id=0B3ehFEncKJH7ZDgxMGI1YjgtZTE2MS00ZTBkLWI2NzgtYzVhZjUxOWEzZGI0

聽起來您自建立客戶以來就已經更改了界面。

清理並重建所有項目是一個好主意。

我找到了問題的答案。 基本上,當我創建dll項目時,它是從IDispatch繼承的,但是我在測試應用程序中使用的界面希望它從IUnknown繼承。 這意味着接口不匹配,IDispatch繼承自IUnknown並添加了許多方法。 更改更改以匹配dll起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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