在發佈模式下使用Qt 4.8在Windows 7上編譯我的項目時遇到了一些麻煩。一切工作正常調試,但在發佈我得到一個未處理的異常:0xC0000005:訪問衝突。僅在發佈模式下使用glGenBuffer的未處理異常 - QT
我把它縮小到發生這種情況的線上,這是我生成我的像素緩衝區時的線。 我的第一個猜測是錯誤的DLL加載,但我用Dependency Walker檢查了可執行文件,並且加載的每個DLL都是正確的。
這裏去我的一些代碼:
class CameraView : public QGLWidget, protected QGLFunctions;
void CameraView::initializeGL()
{
initializeGLFunctions(this->context());
glGenBuffers(1, &pbo_); //<<<<< This is where I get the unhandled exception on Release mode
glBindBuffer(QGLBuffer::PixelUnpackBuffer, pbo_);
glBufferData(QGLBuffer::PixelUnpackBuffer, 3 * sizeof(BYTE) * image_width_ * image_height_, NULL, GL_STREAM_DRAW);
...
}
同樣,在調試這個偉大工程。爲什麼這隻會在Release上發生?
我會運行你的應用程序使用某種內存檢查器。 – 2012-04-19 15:14:20
要麼pbo_不應該是,或者你沒有正確初始化擴展(glGenBuffers指針爲空)。 – Robinson 2012-04-19 18:31:05
我相信我正在初始化擴展,因爲它在調試模式下工作。 initializeGLFunctions()是我認爲的glewInit等價物。不知道雖然... pbo_是我在類構造函數上初始化的GLuint成員。 – Theo 2012-04-19 19:55:48