2011-04-02 93 views
0

我有一個惱人的,不幸的是迫切的問題。我開始嘗試在Visual Studio 2008 x86中爲我的Windows應用程序繼承QGLWidget。它在運行時立即崩潰,據我所知,當QGLWidget被實例化時。最後,我結束了試圖對Open GL的一切包括Qt的例子,它們都具有相同的行爲 - 崩潰如下:Tricky的Qt/OpenGL的錯誤 - 一切崩潰

錯誤信息彈出:

「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]:堆:在a40c288 修改免費 堆塊a40c108之後被釋放Windows已經 在 2dpainting.exe觸發一個斷點。

這可能是由於 堆,這表明在 2dpainting.exe或任何其 已加載的DLL的錯誤的腐敗......

也發生在我從調試開關釋放。不過,我可以運行大部分這些Open GL示例編譯的可執行文件。 我無法通過互聯網搜索找到任何東西。大師,請幫忙!

謝謝, 馬特

+0

我已經在Windows(XP,Vista,7)上使用了子類QGLWidgets,從來沒有這個問題。我使用QtCreator,爲什麼不嘗試使用它來查看會發生什麼? – 2011-04-02 00:29:27

+0

並編輯您正在使用的Qt,Windows版本。這不是32位與64位不兼容的問題嗎? – 2011-04-02 00:29:56

+0

解決了我自己 - 感謝您的意見。 – 2011-04-02 01:33:41

回答

0

我通過更新我的顯卡驅動程序到最新版本解決了這個問題。奇怪的是,因爲我使用的是已經很舊的英特爾GMA 965高速芯片組。 現在所有的Qt例子都編譯得很好。沒有堆腐敗。

我也能夠從開始菜單運行主要Qt示例和演示應用程序,這是我以前從未能夠做到的 - 它只會崩潰。