繁体   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