Why does my MinGW compile SDL program not run?

Viewed 43

I got the latest version of SDL from their github (and picked the latest version for minGW, my compiler), and it fully compiles, but once I try to run the program, it says "This app can't run on your PC", and when I use the compatibility troubleshooter, all it does is add the flag "Windows compatibility mode: Windows 8", whitch doesen't fix it. Is this a problem with the flags I'm using when compiling, or is it something else? The compile command I'm using is:

g++ (name) -IPathtoInclude -LPathtolib -w -Wl,-subsystem,windows -lmingw32 -lSDL2main -lSDL2 -o (name)

I'm new to SDL, so dumb it down a bit if possible please.

Edit: I'm running Windows 10, with MinGW 4.3.5

The code I'm using is:

#include <SDL.h>
#include <stdio.h>

//Screen dimension constants
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;

int main( int argc, char* args[] ) {
    //The window we'll be rendering to
    SDL_Window* window = NULL;
    
    //The surface contained by the window
    SDL_Surface* screenSurface = NULL;

    //Initialize SDL
    if (SDL_Init( SDL_INIT_VIDEO ) < 0) {
        printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError());
    }
    else {
        //Create window
        window = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
        if (window == NULL) {
            printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
        }
        else {
            //Get window surface
            screenSurface = SDL_GetWindowSurface( window );

            //Fill the surface white
            SDL_FillRect( screenSurface, NULL, SDL_MapRGB( screenSurface->format, 0xFF, 0xFF, 0xFF ) );
            
            //Update the surface
            SDL_UpdateWindowSurface( window );
            
            //Hack to get window to stay up
            SDL_Event e; bool quit = false; while( quit == false ){ while( SDL_PollEvent( &e ) ){ if( e.type == SDL_QUIT ) quit = true; } }
        }
    }

    //Destroy window
    SDL_DestroyWindow(window);

    //Quit SDL subsystems
    SDL_Quit();

    return 0;
}
0 Answers
Related