在visual studio下编译错误lnk 2019

时间:2014-12-03 16:18:51

标签: c++ opengl glew

我不知道该错误是什么。我搜索了一些解决方案,但没有任何帮助。

链接器错误:

"error LNK2019: unresolved external symbol __ imp__glDrawArrays"

源代码:

#include <stdio.h>
#include <stdlib.h>
#include <GL\glew.h>
#include <GLFW\glfw3.h>

int main()
{
    if(glfwInit()==false){
        //Did not succeed
        fprintf(stderr, "GLFW faild ");
        return -1;
    }
    glfwWindowHint(GLFW_SAMPLES,4);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);


    GLFWwindow* window;
    window = glfwCreateWindow(640,480,"Hallo Welt",NULL,NULL);
    if(!window)
    {
        fprintf(stderr, "Window failed");
        glfwTerminate();

        return -1;
    }
    glfwMakeContextCurrent(window);
    glewExperimental = true;
    if(glewInit() !=  GLEW_OK)
    {
        fprintf(stderr, "glew init failed");
        glfwTerminate();
        return -1;
    }

    GLuint vaoID; //Vertex array erzeugt
    glGenVertexArrays(1, &vaoID);
    glBindVertexArray(vaoID); // wir verwenden das VA

    static const GLfloat verts[] = {
        -1.0f,-1.0f,0.0f,
        1.0f,-1.0f,0.0f,
        0.0f,1.0f,0.0f};
    //Generate VBO
    GLuint vboID;
    glGenBuffers(1, &vboID);
    glBindBuffer(GL_ARRAY_BUFFER,vboID);

    glBufferData(GL_ARRAY_BUFFER,sizeof(verts),verts,GL_STATIC_DRAW);



    do{
        glDisableVertexAttribArray(0);
        glBindBuffer(GL_ARRAY_BUFFER,vboID);
        glVertexAttribPointer(0, 3,GL_FLOAT,GL_FALSE,0,(void*)0);

        glDrawArrays(GL_TRIANGLES,0,3);
        glDisableVertexAttribArray(0);

        glfwSwapBuffers(window);
        glfwPollEvents();
    } while(glfwWindowShouldClose(window)==false);

    return 0;
}

我为include和lib文件设置了目录。 在Linker-&gt;输入我有glew32.lib,glew32s.lib,glfw3dll.lib

如果我删除函数glDrawArrays,代码可以工作,我会得到黑色窗口。但我想在窗口画一个白色三角形。

1 个答案:

答案 0 :(得分:1)

这里有几个问题:

  1. 您正在关联glew32.lib(动态 - &gt; DLL) glew32s.lib(静态)

    • 只选择一个,我建议glew32s.lib - 但请确保在使用GLEW_STATIC时将glew32s.lib添加到预处理器定义中。

  2. 您只链接到支持库,而不是Windows附带的实际OpenGL运行时

    • 通过向您的库中添加OpenGL32.lib来解决此问题。