代码之家  ›  专栏  ›  技术社区  ›  Nicolai Lissau

错误LNK2019使用openglbook.com在Visual Studio 12中未解析的外部符号

  •  3
  • Nicolai Lissau  · 技术社区  · 12 年前

    我正在尝试使用glew和freeglut设置openGL,使用 this guide .

    我一直遵循指南直到第7步,但当使用本书第1章中的代码进行编译时(如建议所示),我会出现以下错误。我可以看到函数_InitWindow和_RenderFunction中出现了错误,但我不知道如何解决它们。

    Error   1   error LNK2019: unresolved external symbol __imp__glutInitWindowSize@8 referenced in function _InitWindow     c:\Users\Lissau\documents\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\main.obj ConsoleApplication1
    Error   2   error LNK2019: unresolved external symbol __imp__glutInitDisplayMode@4 referenced in function _InitWindow   c:\Users\Lissau\documents\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\main.obj  ConsoleApplication1
    Error   3   error LNK2019: unresolved external symbol __imp__glutMainLoop@0 referenced in function _main    c:\Users\Lissau\documents\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\main.obj  ConsoleApplication1
    Error   4   error LNK2019: unresolved external symbol __imp__glutPostRedisplay@0 referenced in function _RenderFunction c:\Users\Lissau\documents\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\main.obj  ConsoleApplication1
    Error   5   error LNK2019: unresolved external symbol __imp__glutSwapBuffers@0 referenced in function _RenderFunction   c:\Users\Lissau\documents\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\main.obj  ConsoleApplication1
    Error   6   error LNK2019: unresolved external symbol __imp__glutReshapeFunc@4 referenced in function _InitWindow   c:\Users\Lissau\documents\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\main.obj  ConsoleApplication1
    Error   7   error LNK2019: unresolved external symbol __imp__glutDisplayFunc@4 referenced in function _InitWindow   c:\Users\Lissau\documents\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\main.obj  ConsoleApplication1
    Error   8   error LNK2019: unresolved external symbol __imp____glutInitWithExit@12 referenced in function _glutInit_ATEXIT_HACK@8   c:\Users\Lissau\documents\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\main.obj  ConsoleApplication1
    Error   9   error LNK2019: unresolved external symbol __imp____glutCreateWindowWithExit@8 referenced in function _glutCreateWindow_ATEXIT_HACK@4    c:\Users\Lissau\documents\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\main.obj  ConsoleApplication1
    Error   10  error LNK2019: unresolved external symbol __imp__glutSetOption@8 referenced in function _InitWindow c:\Users\Lissau\documents\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\main.obj  ConsoleApplication1
    Error   11  error LNK2019: unresolved external symbol __imp__glutInitContextVersion@8 referenced in function _InitWindow    c:\Users\Lissau\documents\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\main.obj  ConsoleApplication1
    Error   12  error LNK2019: unresolved external symbol __imp__glutInitContextFlags@4 referenced in function _InitWindow  c:\Users\Lissau\documents\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\main.obj  ConsoleApplication1
    Error   13  error LNK2019: unresolved external symbol __imp__glutInitContextProfile@4 referenced in function _InitWindow    c:\Users\Lissau\documents\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\main.obj  ConsoleApplication1
    Error   14  error LNK1120: 13 unresolved externals  c:\users\lissau\documents\visual studio 2012\Projects\ConsoleApplication1\Debug\ConsoleApplication1.exe ConsoleApplication1
    

    我的主.c文件中的代码是:

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <GL/glew.h>
    #include <GL/freeglut.h>
    #define WINDOW_TITLE_PREFIX "Chapter 1"
    
    int CurrentWidth = 800,
        CurrentHeight = 600,
        WindowHandle = 0;
    
    void Initialize(int, char*[]);
    void InitWindow(int, char*[]);
    void ResizeFunction(int, int);
    void RenderFunction(void);
    
    int main(int argc, char* argv[])
    {
        Initialize(argc, argv);
    
        glutMainLoop();
    
        exit(EXIT_SUCCESS);
    }
    
    void Initialize(int argc, char* argv[])
    {
        InitWindow(argc, argv);
    
        fprintf(
            stdout,
            "INFO: OpenGL Version: %s\n",
            glGetString(GL_VERSION)
            );
    
        glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
    }
    
    void InitWindow(int argc, char* argv[])
    {
        glutInit(&argc, argv);
    
        glutInitContextVersion(4, 0);
        glutInitContextFlags(GLUT_FORWARD_COMPATIBLE);
        glutInitContextProfile(GLUT_CORE_PROFILE);
    
        glutSetOption(
            GLUT_ACTION_ON_WINDOW_CLOSE,
            GLUT_ACTION_GLUTMAINLOOP_RETURNS
            );
    
        glutInitWindowSize(CurrentWidth, CurrentHeight);
    
        glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
    
        WindowHandle = glutCreateWindow(WINDOW_TITLE_PREFIX);
    
        if(WindowHandle < 1) {
            fprintf(
                stderr,
                "ERROR: Could not create a new rendering window.\n"
                );
            exit(EXIT_FAILURE);
        }
    
        glutReshapeFunc(ResizeFunction);
        glutDisplayFunc(RenderFunction);
    }
    
    void ResizeFunction(int Width, int Height)
    {
        CurrentWidth = Width;
        CurrentHeight = Height;
        glViewport(0, 0, CurrentWidth, CurrentHeight);
    }
    
    void RenderFunction(void)
    {
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    
        glutSwapBuffers();
        glutPostRedisplay();
    }
    
    1 回复  |  直到 8 年前
        1
  •  6
  •   Nicolai Lissau    12 年前

    在没有运气的情况下多次重做教程的步骤后,我去自由泳寻找答案(教程中没有)。

    我的问题是,额外的库目录路径没有设置为我的lib文件的路径。右键单击您的项目,从下拉列表中选择“所有配置”,然后转到链接器->常规->其他库目录->编辑在我的情况下,我将其设置为“C:\Program Files%28x86%29\Microsoft SDK \Windows\v8.0A\Lib”。