在 MFC 项目中删除对某些 ActiveX 库的依赖的最简单方法?

问题描述

我正在努力极大地简化旧的 MFC 应用程序,我想利用这个机会来消除对某个第三方 ActiveX 库的依赖,而这种依赖一直是令人头疼的问题。我首先只是尝试删除 cpp 代码中对这些控件的所有引用。它编译得很好,但是当安装在新计算机上时,如果安装项目中不包含库 .msm 文件,它就会崩溃。

现在的问题是我不知道项目中对这些对象的任何剩余引用在哪里,因此没有简单的方法来跟踪和删除它们。简单地使用 VS 中的 Find-functionity 只会返回我已经清理过的 cpp 文件中的结果,而不是 f.ex 中的任何控件实例。对话框资源文件。有没有办法在项目中搜索所有这些对象,或者在编译时检查它们,以便我可以使用编译错误来查看任何库对象保留在哪里?

解决方法

首先:CoCreateInstanceCoGetClassObject 是创建 COM 对象的正常方式。应该很容易在这里设置断点或设置一个钩子来监控正在发生的事情。

接缝表明您的软件错误处理不当。否则,如果无法创建对象,应用程序应显示错误消息。

尝试调试....使用远程调试,即使崩溃转储也会引导您到代码位置。

最简单的方法:在您的开发机器中。尝试查看输出窗口并查看是否加载了任何旧的 ActiveX DLL。触发到创建这些对象中的任何一个的位置。

您可以在测试机器上进行远程调试。