gpt4 book ai didi

visual-c++ - ATL : Can't remove a method from a COM interface - ALWAYS reappears like magic

转载 作者:行者123 更新时间:2023-12-04 06:32:23 25 4
gpt4 key购买 nike

环境:VS2008,C++ ATL COM,64Bit,Windows 7

我正在尝试从较旧的 COM 接口(interface)中删除一个方法。我修改了 *.idl,修改了相关的 *.h 和 *.cpp 实现文件,并将其从主项目的 .h 文件中删除。我可以在整个项目中搜索旧方法名称 - 不显示并且编译/链接很好。但是,如果我随后使用对象浏览器查看已编译的 DLL - dang 方法仍然存在!如果我在 .NET 项目中“引用”DLL - 显示该方法。如果 .NET 代码尝试使用该方法 - 它会出现内存异常(这是有道理的)。我一辈子都想不出如何修改 IDL、删除方法代码并让生成的编译 DLL 正确。

该方法到底在哪里潜伏,是否有其他方法可以从现有的 ATL 生成的 COM 接口(interface)中删除方法?我难住了!谢谢!

最佳答案

您是否取消注册旧的 DLL 模块并注册新的?听起来您的注册表可能有不一致的条目。

还要确保周围没有预编译的头文件等,以便在编译时确定它没有包含一些旧副本。

最好的办法是在编译之前删除完整的构建目录(调试/发布),以防您错过删除一些旧文件。

还要检查 .dll 的加载路径,您可以在对象浏览器中看到,将其与注册表项进行比较。也许你以前做过32位版本?

关于visual-c++ - ATL : Can't remove a method from a COM interface - ALWAYS reappears like magic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5255145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com