调用 GLEW 函数时,进程已完成,退出代码为 -1073741515

问题描述

我用 C++ 编写了一个基本的 OpenGL 程序,它只是打开一个窗口。我现在正在尝试绘制一个三角形,但在调用 GLEW 函数时遇到了一些问题。这是我仅使用 OpenGL 的代码

#include "include/glew.h"
#include "include/glfw3.h"

int main()
{
    GLFWwindow* window;

    if (!glfwInit())
        return -1;

    window = glfwCreateWindow(800,600,"HelloWorld",nullptr,nullptr);
    if (!window)
    {
        glfwTerminate();
        return -1;
    }

    glfwMakeContextCurrent(window);

    unsigned int buffer;
    //glGenBuffers(1,&buffer);

    while (!glfwWindowShouldClose(window))
    {
        glClear(GL_COLOR_BUFFER_BIT);

        glfwSwapBuffers(window);

        glfwPollEvents();
    }
    glfwTerminate();
    return 0;
}

取消注释 glGenBuffers(1,&buffer);,这是一个 GLEW 函数,会导致程序退出显示代码 -1073741515。没有显示错误。我已正确链接 GLEW 以及 opengl32、gdi32、user32 和 shell32。我做错了什么?

解决方法

你必须Initialize GLEW。在将 OpenGL 上下文设为当前后立即调用 glewInit

glfwMakeContextCurrent(window);

if (glewInit() != GLEW_OK)
    return 0;

此外,您必须确保可以在运行时找到 DLL 文件。添加到 Windows path 环境变量的路径或将 DLL 文件放在与可执行文件相同的目录中。

,

我通过添加 glewInit() 解决了这个问题,并将 glew32.dll 移动到我的输出目录。我只是在 lib 和 dll 文件之间感到困惑,这就是为什么它不能更早地工作。