glfw + glew:具有旧函数的未解析外部符号

时间:2013-08-10 12:35:34

标签: opengl glew glfw

我对glfw3和glew有一些问题。

以下是代码:

#pragma comment(lib, "glew32.lib")
#pragma comment(lib, "glfw3dll.lib")

#include <iostream>

#include "GLEW\glew.h"
#include "GLFW\glfw3.h"

void error_callback(int error, const char* description)
{
    std::cerr << description << std::endl;
}

void input_callback(GLFWwindow* wnd, int key, int scancode, int action, int mods)
{
    if(key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) glfwSetWindowShouldClose(wnd,      GL_TRUE);
}

int main(int argc, char** argv)
{
//init glfw
if(!glfwInit()) return EXIT_FAILURE;

//error callback
glfwSetErrorCallback(error_callback);

//create window with opengl 4.3 core profil context
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_FALSE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

GLFWwindow* window = glfwCreateWindow(1024, 768, "glfw openGL", NULL, NULL);
if(!window)
{
    glfwTerminate();
    return EXIT_FAILURE;
}

//input callback
glfwSetKeyCallback(window, input_callback);

//binding context
glfwMakeContextCurrent(window);

//init glew
glewExperimental = GL_TRUE;
if(GLEW_OK != glewInit())
{
    glfwDestroyWindow(window);
    glfwTerminate();
    return EXIT_FAILURE;
}

//generate a vertex buffer object
GLuint vbo;
glGenBuffers(1, &vbo);

//set clear color
glClearColor(100.f/255, 149.f/255, 237.f/255, 1.0);

//main loop
while(!glfwWindowShouldClose(window))
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glfwSwapBuffers(window);
    glfwPollEvents();
}

//destroy window
glfwDestroyWindow(window);

//terminate glfw
glfwTerminate();

return EXIT_SUCCESS;
}

以下是我得到的错误:

error LNK2019: symbole externe non rÚsolu __imp__glClear@4 rÚfÚrencÚ dans la fonction _main C:\Users\Adrien\Documents\CPP\GlfwSetup\GlfwSetup\main.obj  GlfwSetup

error LNK2019: symbole externe non rÚsolu __imp__glClearColor@16 rÚfÚrencÚ dans la fonction _main   C:\Users\Adrien\Documents\CPP\GlfwSetup\GlfwSetup\main.obj  GlfwSetup

如果我评论glClearColor和glClear行程序运行良好(甚至glGenBuffers部分)。所以我不明白为什么我可以使用一些openGl函数但不能使用其他函数。

操作系统:Windows 7 64位。 IDE:visual studio 2012 express。 glfw版本:3。 glew版本1.10.0。

1 个答案:

答案 0 :(得分:0)

问题解决了。

我实际上忘了链接OpenGL库。

感谢您的帮助。