棘手的Qt / OpenGL错误 - 一切都崩溃了

时间:2011-04-02 00:02:20

标签: qt opengl crash

我有一个令人烦恼且不幸的紧急问题。我开始尝试在Visual Studio 2008 x86中为我的Windows应用程序子类化QGLWidget。据我所知,当QGLWidget被实例化时,它在运行时立即崩溃。最后,我最终尝试了所有包含的Open GL的Qt示例,它们都表现相同 - 崩溃如下:

弹出错误信息:

  

“Windows触发了一个断点   2dpainting.exe ...“

执行在qgl_win.cpp中停止(指示断点):

QGLTemporaryContext::~QGLTemporaryContext()
{
    wglMakeCurrent(d->dmy_pdc, 0);
    wglDeleteContext(d->dmy_rc);
    ReleaseDC(d->dmy_id, d->dmy_pdc);
    DestroyWindow(d->dmy_id);
--> if (d->old_dc && d->old_context)
        wglMakeCurrent(d->old_dc, d->old_context);
}

输出:

  

... HEAP [2dpainting.exe]:HEAP:免费   堆块a40c108在a40c288处修改   在Windows被释放后   触发了一个断点   2dpainting.exe。

     

这可能是由于腐败造成的   堆,表示中的错误   2dpainting.exe或其中的任何DLL   载满了......

当我从调试切换到发布时也会发生。但是,我可以运行大多数这些Open GL示例编译的可执行文件就好了。 我无法通过互联网搜索找到任何东西。大师,请帮忙!

谢谢, 马特

1 个答案:

答案 0 :(得分:0)

我通过将我的图形驱动程序更新到最新版本来解决问题。很奇怪,因为我使用的是英特尔GMA 965高速芯片组,这已经很老了。 现在所有的Qt示例都编译得很好。没有堆损坏。

我也可以从开始菜单运行主要的Qt示例和演示应用程序,这是我以前从未做过的 - 它只会崩溃。