Подавить сообщение R6025 Чистый вызов виртуальной функции

Я разрабатываю .NET 4 Заявка (WPF) который использует старый C++-Library, Эта библиотека глючит, и иногда я получаю чисто виртуальные вызовы функций. (И я ничего не могу поделать с этой библиотекой...)

Я настроил обработчик с помощью _set_purecall_handler от msvcr100.dll, Во время отладки я также могу подтвердить, что мой обработчик вызван. Однако, оставив мой обработчик, приложение показывает MessageBox информирование о чистом вызове виртуальной функции и последующем выходе из приложения.

Как я могу предотвратить это messagebox от показа и продолжения работы приложения?

1 ответ

Решение

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

Просто позвони exit(0) или аналогичный в конце вашего обработчика, и исходное диалоговое окно будет подавлено.

Другие вопросы по тегам