![](/img/trans.png)
[英]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.