ATL COM dll中调用了错误的方法
Wrong method called in ATL COM dll
我已经使用ATL创建了一个COM dll。当我尝试在非托管C++中使用它时,我发现缓冲区溢出。我目前正在使用一个名为OnInitIDA()的简单方法进行测试,我在其中所做的只是一个cout语句和返回。当我运行此程序时,返回的HRESULT将为0,但它不会输出我期望的行。通过使用调试器的逐步进入函数,我发现在调用OnInitIDA时,它实际上进入了另一个名为GetInclusionList的方法,而不是输入OnInitiIDA的代码。一旦我在这个方法中放置了一条语句,当应用程序运行时,这一行就被打印出来了。有人知道为什么会调用错误的方法吗?
如果有帮助的话,我的代码已经发布在这里:https://docs.google.com/open?id=0B3ehFEncKJH7ZDgxMGI1YjgtZTE2MS00ZTBkLWI2NzgtYzVhZjUxOWEzZGI0
这听起来像是在构建客户端后更改了界面。
清理并重建所有项目是个好主意。
我找到了问题的答案。基本上,当我创建dll项目时,它继承自IDispatch,但我在测试应用程序中使用的接口希望它继承自IUnknown。这意味着接口不匹配,IDispatch继承了IUnknown并添加了许多方法。更改更改这些以匹配dll工作。
相关文章:
- C++:正在检查LinkedList中的回文-递归方法-错误
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 方法内部但循环仍得到预期的不合格id错误C++
- 重载方法的方式会在使用临时调用时生成编译器错误
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 在C++中使用内联方法时出现未定义的符号错误
- 使用类模板的方法链接错误
- 尝试了解在导入的静态方法上使用删除方法时的错误
- 我的模板类方法返回错误类型?
- QtQuick - qml:28:错误:未知方法返回类型:自定义类型
- C++数组队列实现方法错误
- 方法错误"not all control paths return a value"和方法不返回值
- 为什么我的 setter 方法会产生错误的访问错误
- 派生类调用父类的方法,该方法调用重写的虚拟方法调用错误的方法
- 为什么调用没有正文的纯虚拟方法不会导致链接器错误?
- Android JNI 未定义对错误 c++ 方法的引用
- 这是哨兵线性搜索的错误方法吗?
- 这是重定向fork和execvp派生的子级的输出的错误方法吗
- flickcurl错误-方法flickr.oauth.access_token失败了
- 错误:方法未在此范围内声明(但已包含)