MFC 程序仅在某些 Windows 7 32 位计算机上存在运行时错误 R6025,并在其上安装 Visual Studio 后修复

Posted

技术标签:

【中文标题】MFC 程序仅在某些 Windows 7 32 位计算机上存在运行时错误 R6025,并在其上安装 Visual Studio 后修复【英文标题】:MFC program has runtime error R6025 on certain Windows 7 32 bit computers only and fixes after installing Visual Studio on it 【发布时间】:2016-02-21 14:08:21 【问题描述】:

我有一个使用 Visual Studio 2010 编译的 MFC 应用程序。 在某台计算机(32 位)上,出现“运行时错误:R6025 纯虚函数调用”错误消息,有时会出现静默关闭(没有崩溃)。

说服客户安装 Visual Studio 2010 后,错误自动消失。但我不知道为什么。 在该 PC 上安装 Visual Studio 之前,已安装 Visual C++ 2010 可再发行组件 (x86)。

即使安装了可再发行组件,为什么还要在其上安装 Visual Studio 2010 来修复它?也许可再发行组件已损坏? (如果可能)或者 Visual Studio 安装其他可能影响的文件?

我需要向客户解释是什么解决了错误,但我不确定。 有什么安全的方法可以强制应用程序使用我想要避免这些难以重现的错误的 MFC 文件?

顺便说一句,没有调用纯虚函数,所以我认为可能与可分发文件或其他文件有某种关系。

【问题讨论】:

R6025是调用纯虚函数时出现的运行时错误。错误消息是在启动时出现还是在特定操作时出现? “我需要向客户解释是什么修复了错误,但我不确定。” - 当然不是,您修改了唯一存在该错误的系统 可以复制。您刚刚失去了诊断问题的最后机会。 根据我的经验,当您通过将WINVER 定义设置为比一个你运行的。这并不能解释为什么问题已得到解决,但请确保您安装的可再发行组件与您用于构建的 VS2010 服务包相同。 MichaelWalz:调用 lambda 函数时出现错误消息。 IInspectable:你完全正确。我已经吸取了教训。 :( 但是,我想知道您对“更改系统”可能是什么原因的看法。@RogerRowland:您的评论就是答案。我可以在另一台计算机上重现该错误(R6025)。上有一个 dll .exe 文件夹不是来自 Service Pack 1,并且该程序是为 SP1 构建的,因此,当调用该 lambda 时,出现了运行时错误。我想将此标记为答案,但我不知道如何. 谢谢! @manujcm 好的,谢谢 - 我已将我的评论转换为答案,因此如果您愿意,可以接受和/或投票。 【参考方案1】:

根据我的经验,当您通过将WINVER 定义设置为比您运行的操作系统更高级别的操作系统来构建错误版本的 Windows SDK 时,有时会发生“调用纯虚拟”错误。

这并不能解释为什么问题已得到解决,因此还要确保您安装的可再发行组件与您用于构建的 VS2010 服务包相同。

【讨论】:

以上是关于MFC 程序仅在某些 Windows 7 32 位计算机上存在运行时错误 R6025,并在其上安装 Visual Studio 后修复的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 64 位 MFC DLL 的 C++ 32 位应用程序

是否可以在 Windows 7 上同时安装 32 位和 64 位 Java?

Windows系统下运行某些程序时缺少“Msflxgrd.ocx”的解决方法

在 Windows 7(32 位)上运行 2 个读取 Paradox 表的应用程序失败

WIN32是啥啊

在某些特殊情况下,Win32 ShowWindow api 在 Windows 7 SP1 上的行为是不是不同?