我有一个令人烦恼且不幸的紧急问题。我开始尝试在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示例编译的可执行文件就好了。 我无法通过互联网搜索找到任何东西。大师,请帮忙!
谢谢, 马特
答案 0 :(得分:0)
我通过将我的图形驱动程序更新到最新版本来解决问题。很奇怪,因为我使用的是英特尔GMA 965高速芯片组,这已经很老了。 现在所有的Qt示例都编译得很好。没有堆损坏。
我也可以从开始菜单运行主要的Qt示例和演示应用程序,这是我以前从未做过的 - 它只会崩溃。