Smiled_One
Smiled_One

Reputation: 465

Fail to use SDL with MinGW on windows

I wanted to start learning to program with SDL. So I download x86 for windows, put all the lib and the include in MinGW. But when I compile it doesn't know the SDL functions exist.

# define SDL_MAIN_HANDLED  // somehow it want it to not define its own main 

#include <iostream>
#include <sdl2/SDL.h>

using namespace std;

int main( int argc, char* argv[] ) {
    SDL_SetMainReady(); // just for check 
    return 0;
}

I read that the linking need to be in specific order (mingw32, SDL2main and then libSDL2), But I think Eclipse run a wrong compiling command.

The eclipse command:

g++ -O0 -g3 -Wall -c -fmessage-length=0 -o "src\\fire.o" "..\\src\\fire.cpp" 
g++ -o fire.exe "src\\fire.o" -lmingw32 -lSDL2main -llibSDL2 
src\fire.o: In function `main':
C:\Or\C++\Projects\fire\Debug/../src/fire.cpp:16: undefined reference to `SDL_SetMainReady'
collect2.exe: error: ld returned 1 exit status

Do you think I miss something?

Upvotes: 1

Views: 367

Answers (2)

Smiled_One
Smiled_One

Reputation: 465

Ok I solve it. I'm not sure if the problem was lack of support on 32 bit or the fact that minGW and SDL were from different compilers that probably didn't match..

But what I did is to delete minGW from my pc and download WinBuild. WinBuild its a download manager that offer a lot of libs and tools, include minGW64 bit and SDL. The advantage is that they were all compile from the same compiler with the same configurations.

after that i change the path to minGW in to the new 64 bit path inside WinBuild folder, add g++ from Winbuild the to the path as well and restart.

Then, adding and linking work without any problem! I still need to put # define SDL_MAIN_HANDLED on the start to make it work, but its work!

Upvotes: 0

DGKarlsson
DGKarlsson

Reputation: 1101

I think you need to change -llibSDL2 to -lSDL2.

Upvotes: 1

Related Questions