在发布模式下使用 Qt 4.8 在 Windows 7 上编译我的项目时遇到了一些麻烦。调试时一切正常,但在发布时我得到一个未处理的异常:0xC0000005:访问冲突。
我把它缩小到发生这种情况的那一行,也就是我生成像素缓冲区的时候。我的第一个猜测是加载了错误的 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);
...
}
同样,这在调试时效果很好。为什么这只会在发布时发生?