Sign in to follow this  
Followers 0
Ebrithil

SDL linking

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 this post


Link to post
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 this post


Link to post
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 this post


Link to post
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 this post


Link to post
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 this post


Link to post
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 this post


Link to post
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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0