PDA

Voir la version complète : Programmation SDL sous mingw


Feriaman
04/10/2005, 16h51
Bonjour,

J'essaie actuellement de commençer un projet sdl sous windows et je n'arrive vraiment pas à faire quelque chose de compilable : l'édition de lien ne marche pas.

Voici mon code (trivial) :
#include "SDL.h"

int main(int argc, char *argv[])
{
return(0);
}


voici la ligne de commande que génère l'ide pour la compilation :
g++ -I"C:\eclips\SDL\include" -O0 -g3 -Wall -c -fmessage-length=0 -omain.o ../main.cpp
et voici la ligne de commande que mon ide génère pour linker :
g++ -L"C:\eclips\SDL\lib" -L"C:\eclips\SDL\bin" -o test.exe main.o -lSDL -lmingw32 -lSDLmain

et voici le log qui en découle :
C:\eclips\SDL\lib/libSDLmain.a(SDL_win32_main.o)(.text+0x301): In function `cons
ole_main':
/home/hercules/public_cvs/SDL12/src/main/win32/SDL_win32_main.c:219: undefined r
eference to `SDL_Init'
C:\eclips\SDL\lib/libSDLmain.a(SDL_win32_main.o)(.text+0x30a):/home/hercules/pub
lic_cvs/SDL12/src/main/win32/SDL_win32_main.c:220: undefined reference to `SDL_G
etError'
C:\eclips\SDL\lib/libSDLmain.a(SDL_win32_main.o)(.text+0x36e):/home/hercules/pub
lic_cvs/SDL12/src/main/win32/SDL_win32_main.c:224: undefined reference to `SDL_Q
uit'
C:\eclips\SDL\lib/libSDLmain.a(SDL_win32_main.o)(.text+0x38a):/home/hercules/pub
lic_cvs/SDL12/src/main/win32/SDL_win32_main.c:244: undefined reference to `SDL_S
etModuleHandle'
collect2: ld returned 1 exit status


j'ai bien sur téléchargé la dernière version de dev de sdl pour mingw à l'adresse suivante : http://www.libsdl.org/download-1.2.php et je l'ai décompressée dans "C:\eclips\SDL" car je sais que g++ n'aime pas trop les chemins windows avec des espaces et des accents.

Voilà où j'en suis, j'ai pas mal baroudé pour en arriver là.

Ces lacunes sont probablement dues à mon inexpérience en compilation directe : étant habitué à travailler avec Visual C++, je lui donnais globalement les adresses des répertoires contenant les lib et les includes et il se débrouillait tout seul.

Merci par avance à ceux qui sauront m'aider.

Mokona
04/10/2005, 17h04
Je te propose de remplacer :

g++ -L"C:\eclips\SDL\lib" -L"C:\eclips\SDL\bin" -o test.exe main.o -lSDL -lmingw32 -lSDLmain

par

g++ -L"C:\eclips\SDL\lib" -L"C:\eclips\SDL\bin" -o test.exe main.o -lmingw32 -lSDLmain -lSDL

Feriaman
04/10/2005, 17h15
Merci beaucoup, je n'imaginais pas que l'ordre avait une importance.
La commande que tu proposes fonctionne parfaitement.