2016-02-21 15 views
1

У меня есть приложение MFC, скомпилированное с Visual Studio 2010. На определенном компьютере (32 бит) у него было «Runtime ошибка: R6025 чистая виртуальная функция вызова "сообщение об ошибке и иногда молчание закрыть (без сбоев).У программы MFC была ошибка R6025 на некоторых компьютерах с 32-разрядной версией Windows 7 и исправления после установки Visual Studio на нее

Убедившись, что клиент установил Visual Studio 2010, ошибка исчезла автоматически. Но я не знаю почему. Распространяемые компоненты Visual C++ 2010 (x86) были установлены перед установкой Visual Studio на этом ПК.

Почему установка Visual Studio 2010 на нем исправила его, хотя были установлены распространяемые компоненты? Может быть, перераспределяемые были повреждены? (Если это возможно) Или Visual Studio устанавливает другие файлы, которые могут повлиять?

Мне нужно объяснить заказчику, что зафиксировала ошибку, но я не уверен. Есть ли какой-либо безопасный способ заставить приложение использовать файлы MFC, которые я хочу избежать таких труднообратимых ошибок?

Кстати, не было вызова чистой виртуальной функции, поэтому я думаю, что может быть какое-то отношение к дистрибутивам или некоторым другим файлам.

+1

R6025 - это ошибка времени выполнения, которая возникает при вызове чистой виртуальной функции. Появляется ли сообщение об ошибке при запуске или при конкретном действии? –

+5

* «Мне нужно объяснить клиенту, что зафиксировала ошибку, но я не уверен». * - Конечно, нет, вы изменили единственную систему, в которой ошибка ** ** может быть воспроизведена. Вы просто взорвали свой последний шанс диагностировать проблему. – IInspectable

+1

По моему опыту, ошибка «вызов чистой виртуальной» иногда возникает, если вы создали неправильную версию SDK Windows, установив ['WINVER'] (https://msdn.microsoft.com/library/windows/desktop/aa383745) определяет более высокий уровень ОС, чем тот, на котором вы запускаете. Это не объясняет, почему проблема была исправлена, но убедитесь, что вы распространяете распространяемые компоненты для одного и того же пакета обновления VS2010, как вы использовали для сборки. –

ответ

1

По моему опыту, ошибка «вызов чистой виртуальной» иногда возникает, если вы построили неверную версию SDK Windows, установив WINVER на более высокий уровень ОС, чем тот, на котором вы запускаете.

Это не объясняет, почему проблема была исправлена, поэтому также убедитесь, что вы распространяете распространяемые компоненты для одного и того же пакета обновления VS2010, как вы использовали для сборки.