Followers 0

6 posts in this topic

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.

Edited by Ebrithil
0

Share on other sites

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?

0

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

Share on other sites

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?

0

Share on other sites

How/where did you "install" SDL?

Note that [url="http://wiki.libsdl.org/moin.fcg/FAQDevelopment#Do_I_.23include_.3CSDL.h.3E_or_.3CSDL.2BAC8-SDL.h.3E.3F"]SDL itself[/url] 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.

Edited by rip-off
0

Share on other sites

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.

0

Share on other sites

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.

0

Create an account

Register a new account