Jeremy Sayers
Jeremy Sayers

Reputation: 637

Compiling Glew and SDL in C++ with Code::Blocks

I've spent the last 24 work hours trying to get this to compile, using multiple searches and tutorials (Some say I need to link it dynamically while others say I need to statically), I can not get this to work. I'm relatively new to compiling and linking so any help would be appreciated.

Here is my code(As you can tell by my comments I was very tired last night with coding this):

#define NO_SDL_GLEXT
#define GLEW_STATIC
#include "GL/glew.h"
#include "SDL/SDL.h"
#include "SDL/SDL_opengl.h"

int main (int argc, char* args[]){
    //Loads the SDL video module
    SDL_Init(SDL_INIT_VIDEO);

    //Creates the SDL Surface for OpenGL to draw to
    SDL_Surface* surface = SDL_SetVideoMode(800,600,32, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_OPENGL );

    //Sets the caption...
    SDL_WM_SetCaption("OpenGL",0);

    glewExperimental = GL_TRUE;
    glewInit();

    //Main event loop, this is the BREAD AND BUTTER LADIES AND GENTLEMEN
    SDL_Event windowEvent;
    while (true){
        if (SDL_PollEvent(&windowEvent)){
            //If you close the appplication, causes it to actually stop running :D
            if (windowEvent.type == SDL_QUIT) break;

            //Close it with the ESC key! :D:D:D:D:D:D:D:D:D:
            if (windowEvent.type == SDL_KEYUP && windowEvent.key.keysym.sym == SDLK_ESCAPE) break;
        }
            //Literally the one extra line of code needed to do double buffering
        SDL_GL_SwapBuffers();
    }

    //I wish I knew what this ended...LOPE JK
    SDL_Quit();

    return 0;
}

And in the search directories I have:

Compiler:

E:\Programs\CodeBlocks\glew-1.10.0\include
E:\Programs\CodeBlocks\SDL-1.2.15\include

Linker:

E:\Programs\CodeBlocks\glew-1.10.0\lib\Release\x64
E:\Programs\CodeBlocks\SDL-1.2.15\lib

And finally in the Linker settings I have

Link libraries:

E:\Programs\CodeBlocks\glew-1.10.0\lib\Release\x64\glew32s.lib

Other linker options:

-lmingw32 -lglew32s -DGLEW_STATIC -lSDLmain -lSDL

The error I am currently getting is:

In function 'SDL_main':
undefined reference to `glewExperimental'
undefined reference to `glewInit@0'

Thank you in advance for all the help!

Upvotes: 0

Views: 1466

Answers (1)

balajeerc
balajeerc

Reputation: 4098

You are getting linker errors. It looks like you are compiling your application using the Mingw compiler. But, are you sure the glew library you are using was also built with/for Mingw? If you didn't build glew yourself and downloaded a prebuilt binary, it was most probably built using Visual Studio. Note that its not straightforward to mix libraries from different compilers like this.

Look at this: http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs

P.S: Unless philosophical reasons against proprietary software is preventing you from doing so, you really ought to consider using Visual Studio compilers. The express editions of Visual Studio compilers are free (beer-like). You can use the Visual Studio compiler in really great IDEs like QtCreator.

Upvotes: 2

Related Questions