Qt 和 GLEW:程序以代码 -1073741515 退出

Posted

技术标签:

【中文标题】Qt 和 GLEW:程序以代码 -1073741515 退出【英文标题】:Qt and GLEW: The program exited with code -1073741515 【发布时间】:2013-07-26 19:36:21 【问题描述】:

我正在使用 Qt,我正在尝试使用 GLEW 从 OpenGL 1.0 切换到更新的 OpenGL。 我有一个 GUI,它使用 QGLWidget 的子类来处理 OpenGL 的东西。在initializeGL 的开头我执行GLenum err = glewInit(); 语句,这会导致以下结果:

program.exe exited with code -1073741515

更多细节: 库:

LIBS += -L"C:/Program Files/Microsoft SDKs/Kinect/v1.7/lib/amd64/" -lKinect10
LIBS += -lOpenGL32
LIBS += -lglew32
LIBS += -lglu32

标题:

#include <windows.h>
#include <gl/glew.h>
#include <QByteArray>
#include <QGLWidget>
#include <memory>
#include <algorithm>

完整的initializeGL()函数:

void OpenGLWidget::initializeGL()
    GLenum err = glewInit();
    if (GLEW_OK != err)
    
      /* Problem: glewInit failed, something is seriously wrong. */

    
    glEnable(GL_TEXTURE_2D); //Enables the drawing of 2D textures
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width(), height(), 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, (GLvoid*) NULL);
    glBindTexture(GL_TEXTURE_2D, textureId); //Binds the GL_TEXTURE_2D to the textureId
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width(), height(), 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, (GLvoid*) blackScreen); //Strart the program off with a black screen
    glBindTexture(GL_TEXTURE_2D, textureId); //Binds the GL_TEXTURE_2D to the textureId
    glClearColor(0,0,0,0);
    glClearDepth(1.0f);

我做错了什么?

【问题讨论】:

让 GLEW 与 Qt 一起玩通常很痛苦。 Qt 提供了一种在初始化上下文后获取 GL 函数的方法。如果您的目标是 4.3,它将是: QOpenGLFunctions_4_3_Core *funcs = context->versionFunctions(); -- 请注意,Qt 5.1 中发生了一些重大变化;一切都是为了最好的。 【参考方案1】: 您的 Qt 版本是否支持 OpenGL?信不信由你,有些人不信。这就是我的情况,它让我发疯。下载支持 OpenGL 的 Qt 版本并替换您拥有的版本。如果一切顺利,您应该没有问题。 如果您不想下载预烘焙版本,则必须从头开始构建 Qt。这需要 Python、Perl,可能还有 Ruby,并且需要一点耐心(因为它从来没有教程让你想的那么简单)。 您收到的错误代码似乎是linking error,似乎已解决here。希望能解决这个问题。

【讨论】:

我自己编译了这个版本的Qt 4.8.4,它支持OpenGL。该程序使用 OpenGL 运行良好,但我使用了非常过时的东西。我不想使用更新的东西,我想做那个粗糙的 GLEW。这让我想到了这个问题。 确实是 Glew DLL 不在 PATH 上。谢谢=)

以上是关于Qt 和 GLEW:程序以代码 -1073741515 退出的主要内容,如果未能解决你的问题,请参考以下文章

Qt4和GLew似乎互不兼容

在 Qt 5.x 中使用 GLEW

如何在 Qt 中使用 GLEW?

Qt Creator 中的 Glew 链接问题?

Qt 和 QGLWidget 中的 glActiveTexture?

Qt 项目中对 glew 方法的未定义引用