SDL linking

Started by
5 comments, last by Ebrithil 10 years, 11 months ago

Ok so I've been doing research and can't seem to find the correct answer to my problem. I am a linux(Arch) user, and am trying to compile programs that run on Windows. I realize this is a lengthy discussion topic of its own. However I had a method that was working well for me using mingw.

compile line:


/usr/bin/i486-mingw32-g++ -static-libgcc -static-libstdc++ -L . test.cpp -o test.exe

Now my problem is I've just started learning to use SDL. I can link and compile it for linux just fine using:


g++ -Wall test.cpp -o test -lSDL

When I try to compile for windows I get a fatal error: SDL/SDL.h: no such file or directory. I know this is a linking problem, So I've tried:


/usr/bin/i486-mingw32-g++ -static-libgcc -static-libstdc++ -L . test.cpp -o test.exe -lSDL

and


/usr/bin/i486-mingw32-g++ -static -static-libgcc -static-libstdc++ -L . test.cpp -o test.exe

However neither work. I've not had much luck with search results and I've also heard if I compile it staticlly I may run into issues with LGPL. If anyone could shed some light on this problem I'd be greatly appreciative.

Advertisement

Ok so I have got it to compile with no errors using:


/usr/bin/i486-mingw32-g++ -static-libgcc -static-libstdc++ -L . test.cpp -o test.exe -lmingw32 -lSDLmain -lSDL -mwindows

It still wont run on Windows however I get a SDL.dll not found error. So I guess I just have to make it static now?

Put the SDL.dll file in the same directory as the executable file. That's how I have seen most people doing.

Erm dude, if you get an error with SDL/SDL.h that means the header files aren't in the include directory. The linker has nothing to do with it =P Are you sure the headers are installed?

Don't pay much attention to "the hedgehog" in my nick, it's just because "Sik" was already taken =/ By the way, Sik is pronounced like seek, not like sick.

How/where did you "install" SDL?

Note that SDL itself recommends:

Do I #include <SDL.h> or <SDL/SDL.h>?
The most portable way to include SDL headers is to use quotes around the header name:
#include "SDL.h"

You may have to configure your compiler to know to search the directory where the SDL headers are installed. On Linux, this is easy, just use `sdl-config --cflags` as part of your command line. Mingw may have a similar utility program, worth looking into.

I have no problem with linux what so ever. You install SDL by unpacking the tarball and running make (depending on what your distro is). My linker issue that I was having was that it just wasn't looking in the right directory and I have that covered. I just need to figure out how to run the program on a windows computer that dosen't have SDL. That means I need to either include it with the file or make it statically linked.

Put the SDL.dll file in the same directory as the executable file. That's how I have seen most people doing.

This seems to be the best method. Thanks.

This topic is closed to new replies.

Advertisement