SDL doesn't run

Hi everybody I’m learning opengl with sdl from 3DBuzz tutorials which are well explained, but those tutorials were made with sdl 1. after some researching on the internet I got SDL2 and I configured my IDE( which is codeblocks ) to use SDL2 with mingw32.
again, as I mentioned i got some errors that are already solved (mainly with libraries end dependencies as well with the sdl.dll).
now, I compile the program and it successfully compiles, but when I press the RUN button the program window runs for less a second and the following message appears in the command prompt: Process returned 1 (0x1) execution time : 1.933 s

I don’t know what happens and I tried to get some help from internet and asking in onlie forums without a solution.
maybe you SDL2 community can help me to handle this problem.
Here’s the code I wrote following step by step the tutorial.
or maybe I did something wrong with this code?

#include <SDL2/SDL.h>
#include <stdio.h>
#include <stdlib.h>

#if defined (_WIN32) || defined(_WIN64)
    #define WIN32_LEAN_AND_MEAN
    #include <windows.h>
#endif // WIN32

#if defined(__APPLE__) && defined(__MACH__)
    #include <OpenGL/gl.h>
    #include <OpenGL/glu.h>
#else
    #include <GL/gl.h>
    #include <GL/glut.h>
#endif // defined

const GLsizei windowWidth = 500;
const GLsizei windowHeight = 500;


GLfloat cubeRotateX = 45.0f;
GLfloat cubeRotateY = 45.0f;

const Uint8 *keys = NULL;

GLvoid establishProjectionMatrix(GLsizei width, GLsizei height)
{
    glViewport(0, 0, width, height);

    glMatrixMode(GL_PROJECTION);

    glLoadIdentity();

    gluPerspective(50.0f, (GLfloat)width / (GLfloat)height, 0.1f, 200.0f);
}

GLvoid initGL(GLsizei width, GLsizei height)
{
    establishProjectionMatrix(width, height);

    glShadeModel(GL_SMOOTH);

    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LEQUAL);

    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
    glEnable(GL_PERSPECTIVE_CORRECTION_HINT);

}

GLvoid displayFPS(GLvoid)
{
    static long lastTime = SDL_GetTicks();
    static long loops = 0;
    static GLfloat fps = 0.0f;

    int newTime = SDL_GetTicks();

    if (newTime - lastTime > 100)
    {
        float newFPS = (float)loops / float(newTime - lastTime) * 1000.0f;

        fps = (fps + newFPS) / 2.0f;

        char title[80];
        printf(title, "OpenGL Demo - %2f", fps);

        SDL_SetWindowTitle(NULL, title);

        lastTime = newTime;

        loops = 0;
    }

    loops++;

}

GLvoid drawScene(GLvoid)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    glTranslatef(0, 0, -5.0f);
    glRotatef(cubeRotateX, 1, 0, 0);
    glRotatef(cubeRotateY, 0, 1, 0);

    //draw cube
    glBegin(GL_QUADS);
        //top face
        glColor3f(1.0f, 0.5f, 0.0f);
        glVertex3f(1.0f,  1.0f, -1.0f);
        glVertex3f(-1.0f, 1.0f, -1.0f);
        glVertex3f(-1.0f, 1.0f,  1.0f);
        glVertex3f(1.0f,  1.0f,  1.0f);

        //bottom face
        glColor3f(0.0f, 1.0f, 0.0f);
        glVertex3f( 1.0f, -1.0f, -1.0f);
        glVertex3f(-1.0f, -1.0f, -1.0f);
        glVertex3f(-1.0f, -1.0f,  1.0f);
        glVertex3f( 1.0f, -1.0f,  1.0f);

        //front face
        glColor3f(1.0f, 0.0f, 0.0f);
        glVertex3f( 1.0f,  1.0f,  1.0f);
        glVertex3f(-1.0f,  1.0f,  1.0f);
        glVertex3f(-1.0f, -1.0f,  1.0f);
        glVertex3f( 1.0f, -1.0f,  1.0f);

          //back face
        glColor3f(1.0f, 1.0f, 0.0f);
        glVertex3f( 1.0f,  1.0f,  -1.0f);
        glVertex3f(-1.0f,  1.0f,  -1.0f);
        glVertex3f(-1.0f, -1.0f,  -1.0f);
        glVertex3f( 1.0f, -1.0f,  -1.0f);

          //left face
        glColor3f(0.0f, 0.0f, 1.0f);
        glVertex3f(-1.0f,  1.0f,   1.0f);
        glVertex3f(-1.0f,  1.0f,  -1.0f);
        glVertex3f(-1.0f, -1.0f,  -1.0f);
        glVertex3f(-1.0f, -1.0f,   1.0f);

          //right face
        glColor3f(1.0f, 0.0f, 1.0f);
        glVertex3f( 1.0f,  1.0f,  1.0f);
        glVertex3f( 1.0f,  1.0f,  1.0f);
        glVertex3f( 1.0f, -1.0f,  1.0f);
        glVertex3f( 1.0f, -1.0f,  1.0f);
    glEnd();

    glFlush();

    // its suppose to replace glutSwapBuffers() wint SDL_GL_swapBuffers() how can i replace this line?

    displayFPS();
}

GLboolean checkKeys(GLvoid)
{
    static long lastTime =  SDL_GetTicks();

    const GLfloat speed = 1.0f;
    const long updateTime = 10;

    if (keys[SDLK_ESCAPE])
        return true;

    long newTime = SDL_GetTicks();

    if (newTime - lastTime > updateTime)
    {
        if(keys[SDLK_LEFT])
        cubeRotateY -= speed;
        if(keys[SDLK_RIGHT])
        cubeRotateY += speed;
        if(keys[SDLK_UP])
        cubeRotateX -= speed;
        if(keys[SDLK_DOWN])
        cubeRotateX += speed;
    }

    return false;

}



int main(int argc, char **argv)
{
    SDL_Window  *window = SDL_CreateWindow(
        "SDL2_Demo",
        SDL_WINDOWPOS_CENTERED,
        SDL_WINDOWPOS_CENTERED,
        windowWidth,
        windowHeight,
        SDL_WINDOW_OPENGL);


    if ( SDL_Init(SDL_INIT_VIDEO) < 0 )
    {
        fprintf(stderr, "Unable to initialize SDL %s", SDL_GetError());
        exit(1);
    }

     // How can I write this statement in SDL2?
     // SDL_SetVideomode is no longer available and i changed it to  SDL_SetWindowDisplayMode() but trows an error
    /*if ( SDL_SetVideoMode(windowWidth, windowHeight, 0,0) == NULL )
    {
        fprintf(stderr, "Unable to crete openGL scene %s", SDL_GetError());
        exit(2);
    }*/

    initGL(windowWidth, windowHeight);

    SDL_GL_SwapWindow(window);

    SDL_GL_SetSwapInterval(1);


    keys = SDL_GetKeyboardState(NULL);


    int done = 0;


    while ( !done )
    {
        drawScene();

        SDL_Event event;
        while( SDL_PollEvent(&event) )
        {
            if ( event.type == SDL_QUIT )
                done = 1;

            keys = SDL_GetKeyboardState(NULL);
        }

        if ( checkKeys() )
            done = 1;
    }

    SDL_Quit();

    return 1;
}

SDL_CreateWindow() is what you’re looking for.