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

Posted

技术标签:

【中文标题】在 MFC 项目中删除对某些 ActiveX 库的依赖的最简单方法是啥?【英文标题】:Easiest way to remove dependency on certain ActiveX library in MFC project?在 MFC 项目中删除对某些 ActiveX 库的依赖的最简单方法是什么? 【发布时间】:2021-07-20 09:03:17 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

首先:CoCreateInstanceCoGetClassObject 是创建 COM 对象的常规方式。应该很容易在此处设置断点或设置挂钩来监控正在发生的事情。

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

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

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

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

【讨论】:

以上是关于在 MFC 项目中删除对某些 ActiveX 库的依赖的最简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MFC 对话框中替换/更新 ActiveX 控件

如何在 MFC No CLR 中访问 Winform ActiveX 控件

如何使用 MFC 以编程方式更改 ActiveX 控件的属性?

我可以编辑具有 x64 ActiveX 控件的 MFC 对话框吗?

您将使用哪种 C# 项目类型来重新开发 MFC C++ activex 控件?

ActiveX控件(MFC篇)