error LNK2019 unresolved external symbol in Visual Studio 12 using openglbook.com

15,051

After redoing the steps of the tutorial multiple times with no luck, I went freestyle to find the answer (which was not in the tutorial).

My problem was that the additional library directories path, was not set to the path of my lib files. Change this by right clicking your project, select "All configurations" from the dropdown and then go to linker->general->Additional Library Directories->edit. In my case I set it to "C:\Program Files %28x86%29\Microsoft SDKs\Windows\v8.0A\Lib".

Share:
15,051
Nicolai Lissau
Author by

Nicolai Lissau

Updated on June 04, 2022

Comments

  • Nicolai Lissau
    Nicolai Lissau almost 2 years

    I am trying to set up openGL with glew and freeglut, using this guide.

    I have followed the guide until step 7, but when compiling using the code from the chapter 1 of the book (as advised), I get the errors listed below. I can see that the errors occur in the functions _InitWindow and _RenderFunction, but I don't know how to solve them.

    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
    

    The code in my main.c file is:

    #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();
    }