对_imp___glewGenBuffers的未定义引用

时间:2015-12-25 14:14:36

标签: c++ glew

尝试构建此程序时出错:

这些是发生错误的类的文件:

Sprite.h

#ifndef SPRITE_H
#define SPRITE_H

#include <GL/glew.h>


class Sprite
{
    public:
        Sprite();
        virtual ~Sprite();

        void draw();
        void init(int x, int y, int width, int height);

    protected:
    private:
        int _x;
        int _y;
        int _width;
        int _height;
        GLuint _vboID;
};

#endif // SPRITE_H

Sprite.cpp

#include "Sprite.h"

Sprite::Sprite(){
    _vboID = 0;
}

Sprite::~Sprite()
{
    //dtor
}

void Sprite::init(int x, int y, int width, int height){
    _x = x;
    _y = y;
    _width = width;
    _height = height;

    if(_vboID == 0){
       glGenBuffers(1, &_vboID);
    }

    float vertexData[12];

    //first triangle
    vertexData[0] = x + width;
    vertexData[1] = y + height;

    vertexData[2] = x;
    vertexData[3] = y + height;

    vertexData[4] = x;
    vertexData[5] = y;

    //second triangle

    vertexData[6] = x;
    vertexData[7] = y;

    vertexData[8] = x + width;
    vertexData[9] = y;

    vertexData[10] = x + width;
    vertexData[11] = y + height;

    glBindBuffer(GL_ARRAY_BUFFER, _vboID);
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertexData), vertexData, GL_STATIC_DRAW);

}

void Sprite::draw(){

}

此外,我在链接库下按此顺序设置了我的链接器:

的mingw32
libSDL2main
libSDL2
glew32
glew32s
openGL32

我找到了一些解决方案,说你必须使用#define GLEW_STATIC。然而,这个解决方案对我不起作用。也改变连接器的顺序并没有改变任何东西。

1 个答案:

答案 0 :(得分:0)

确保将图书馆链接到哪里 实现了glGenBuffers(我猜它是openGL)。 您写道,您链接了该库,确保为所有配置(调试,发布)和体系结构(x64,win32)设置了链接设置