问题(链接、崩溃)

glew problems (linking, crashing)

我正在尝试在代码块中设置 glew(在 Windows 上)。我正在 link 静态地处理它。 问题是有两个 .lib 文件 glew32.libglew32s.lib。当我 link glew32.lib 我有 undefined reference to ___glewGenBuffers (或除 glewInit() 之外的任何类似功能)。当我 link glew32s.lib 一切编译正常但程序崩溃(分段错误)与 glewInit() 一致。创建 Opengl 上下文,定义 #GLEW_STATIC,从 here 下载 glew。

我的测试程序:

#include <iostream>
#define GLEW_STATIC
#include <GL/glew.h>
#include <GL/freeglut.h>

using namespace std;

void initGL()
{
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
    glutInitWindowPosition(0,0);
    glutInitWindowSize(1920,1080);
}


int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    initGL();
    glutCreateWindow("TEST");
    GLenum err=glewInit();

    if (GLEW_OK != err)
    {
    cout<<glewGetErrorString(err)<<endl;
    }

        GLuint foo[2];
        glGenBuffers(2,foo);

    return 0;
}

知道我做错了什么吗?

仅当您使用库 glew32s.lib 的静态版本时才定义 GLEW_STATIC。因此,如果您这样做,请转到编译器设置面板,并在其他选项中添加 -DGLEW_STATIC.

另外,通过将 glew32s 添加到 linker 设置,确保您 link 正确编辑了库。

您还需要 link 使用 opengl32 打开 GL。