[英]WinAPI - GetLastError always returns 0 when called via a COM ATL 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.