2

我已经解决了这个问题。我正在运行一个名为 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。

我一直在环顾四周,并在不同的论坛上看到了几个相同问题但没有解决方案的帖子。希望有人可以为我阐明这个问题!

4

0 回答 0