Я решил эту проблему.
Я запускал программу под названием RadeonPro, которая является инструментом менеджера видеокарт. Когда я сменил видеокарту, я забыл обновить эту программу. С тех пор я удалил RadeonPro и теперь моя программа завершает свою работу корректно!Я предполагаю, что любой с подобной проблемой может исправить это, удалив / обновив любые программы, которые могут использовать проблемную библиотеку (для меня это был atioglxx.dll)
Прошло много времени с тех пор, как я смотрел на этот проект, с тех пор я получил новую видеокарту (мои драйверы обновлены).
Проблема в том, что когда я выхожу из программы, это вызывает разрыв (внутри отладчика) или сбой, если я запускаю нормально. Сбой происходит после возврата основной функции и происходит при вызове функции, отмеченном ниже в crtexe.c.
/*
* Note that if the exe is managed app, we don't really need to
* call exit or _c_exit. .cctor should be able to take care of
* this.
*/
if ( !managedapp )
exit(mainret); //<<< This Line
if (has_cctor == 0)
_cexit();
Методом проб и ошибок (комментируя блоки кода) я сузил строку проблемы в своем собственном коде до следующего:
mRenderWindow->display();
mRenderWindow — это SFML RenderWindow, Я использую 2.0, но рассматриваю возможность обновления до 2.1. Во всяком случае, когда я удаляю эту строку, программа выходит нормально.
Причина, по которой я упомянул свою графику изначально, заключается в том, что когда происходит сбой, моя трассировка стека имеет это вверху:
atioglxx.dll!03fc0054()
Который является, если я не ошибаюсь, dll, связанным с ATi OpenGL.
Я искал вокруг и видел несколько сообщений на разных форумах с одной и той же проблемой, но без решений. Надеюсь, кто-нибудь сможет пролить свет на этот вопрос для меня!
Задача ещё не решена.
Других решений пока нет …