我已解决此问题 。 我正在运行一个名为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()
如果我没弄错的话,就是ATi OpenGL相关的dll。
我一直在环顾四周,看到不同论坛上的几个帖子有同样的问题,但没有解决方案。希望有人可以为我解释这个问题!