[resolu] sdl sous code::blocks

sdl sous code::blocks [resolu] - C++ - Programmation

Marsh Posté le 28-02-2006 à 22:31:06    

Salut a tous,
 
apres moults essais, je commence litteralement a peter un plomb.
 
j'aimerait prendre les sources d'un projet que j'ai fait en SDL/Opengl et les compiler et pouvoir travailler dessus sous Code::Blocks.
 
mon projet se presente comme suit:
 
repetoire du projet:
 
- sources (*.cpp)
- headers (*.h)
- les dlls dont je me sert (fmod, libxml et cie)
- un repertoire includes dans lequel je met les includes de la SDL et de fmod et cie
- un repertoire libs dans lequel je met les *.lib
- un repertoire "res" dans lequel je stock mes ressources
 
dans un environnement Visual Studio tout se passe tres bien, mais lorsque je souhaite recommencer un projet, en mettant mes fichiers dedans et en ayant parametre un peu, je me retrouve avec cette erreur:
 

Citation :


Linking console executable: SDLapp.exe
libs/SDLmain.lib(./Release/SDL_win32_main.obj):C:\SDL-1.2.9\Src\M:(.text[_main]+0x0): multiple definition of `main'
C:\Program Files\CodeBlocks\lib/libmingw32.a(main.o):main.c:(.text+0x0): first defined here
Warning: .drectve `/DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"MSVCRT" /DEFAULTLIB:"OLDNAMES" ' unrecognized
.objs\cEnemy.o:cEnemy.cpp:(.text+0x3b3): undefined reference to `glLoadIdentity@0'


 
de ce que j'ai pu comprendre, sous windows le main ne s'appel pas main, mais WinMain, sachant en plus que la SDL a aussi son propre point d'entree, le SDLmain il me semble....
 
 
je suis un peu perdu dans tout ces mains differents et je n'arrive guere a configurer convenablement mon projet.
 
quelqu'un pourrait il prendre 2 minutes pour m'expliquer les rudiments de la compilation sous windows en environnement non microsoft :-)
 
merci d'avance


Message édité par gorila le 28-02-2006 à 23:45:38
Reply

Marsh Posté le 28-02-2006 à 22:31:06   

Reply

Marsh Posté le 28-02-2006 à 22:51:07    

apparament tu ne peux pas avoir de main et lier avec la lib mingw32 (c'est elle qui le définie), regarde la doc si c'est comme tu dis (tu fais une fonction qui s'appel WinMain et qui sera le pe)
t'as des trucs pas cross-compiler aussi

Citation :

Warning: .drectve `/DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"MSVCRT" /DEFAULTLIB:"OLDNAMES" ' unrecognized


Reply

Marsh Posté le 28-02-2006 à 23:02:05    

en fait je suis en train de faire aussi des tests avec le template SDL que code::blocks propose, et impossible d'arriver a le compiler....
 
je dois faire une connerie qui viens surement du fait que je doit ne pas bien comprendre la philosophie de cet EDI...
 

Reply

Marsh Posté le 28-02-2006 à 23:09:55    

c'est plutot le fait d'utiliser des edi tu comprends plus se qui se passe derriere, tu as deja utilisé un compilateur en ligne de commande ? tu connais les différéntes étapes du source à la génération du fichier executable ?
code::blocks utilise gcc ? tu peux montrer les commandes générées ou le makefile


Message édité par skelter le 28-02-2006 à 23:10:20
Reply

Marsh Posté le 28-02-2006 à 23:19:49    

bah en fait j'ai fait que ca de toute ma vie du coding en ligne de commande....
 
et la je me retrouve oblige de faire du Visual a l'ecole, donc pour avoir un environnement un peu moins "playschool" je prefere prendre un EDI un peu moins complexe comme code::blocks pour tout ce que je bosse chez moi...
 
 
dans le cadre de l'appli de test SDL, je me retrouve avec ce message d'erreur la:

Citation :


Compiling: main.cpp
Linking console executable: SDLapp.exe
mingw32-g++.exe: Files\CodeBlocks\lib -o SDLapp.exe .objs\main.o        -lmingw32 -lSDLmain -lSDL: No such file or directory
mingw32-g++.exe: no input files
Process terminated with status 1 (0 minutes, 1 seconds)
0 errors, 0 warnings


 
les fichiers : SDL.dll, SDL.lib et SDLmain.lib sont a la racine de mon projet, et dans les builds_options du project, j'ai mis dans la liste "linker" le path complet vers mon projet...

Reply

Marsh Posté le 28-02-2006 à 23:24:15    

deja si tu passes  "-lSDLmain" ld va chercher le fichier libSDLmain.a (si linkage statique) et certainement pas SDLmain.lib

Reply

Marsh Posté le 28-02-2006 à 23:30:45    

le probleme, c'est que meme en mettant les bons fichiers (libSDL.a et libSDLmain.a) il n'arrive pas a trouver en me mettant la meme erreur...

Reply

Marsh Posté le 28-02-2006 à 23:33:08    

tu peux montrer le message d'erreur et la ligne de commande ?

Reply

Marsh Posté le 28-02-2006 à 23:36:54    

toujours la meme... c'est pour ca que je dois merder autre part je suppose. voici la compile en entier:
 
 

Citation :

Switching to target: default
Compiling: main.cpp
Linking console executable: SDLapp.exe
mingw32-g++.exe: Files\CodeBlocks\lib -o SDLapp.exe .objs\main.o        -lmingw32 -lSDLmain -lSDL: No such file or directory
mingw32-g++.exe: no input files
Process terminated with status 1 (0 minutes, 1 seconds)
0 errors, 0 warnings

Reply

Marsh Posté le 28-02-2006 à 23:39:47    

non, la commande (g++ ... ou autre) et la sortie erreur, ca ca doit etre une surcouche (vachement utile, on comprend rien) de ton edi

Reply

Marsh Posté le 28-02-2006 à 23:39:47   

Reply

Marsh Posté le 28-02-2006 à 23:43:17    

bon bah incomprehensible, j'ai efface et remis tout mes paths vers les libs et les includes, et maintenant ca marche....
 
y a quelque chose qui m'a echape la...

Reply

Marsh Posté le 28-02-2006 à 23:45:10    

juste au passage, un petit tips que j'ai decouvert en fouillant pour mon probleme.
 
dans le menu: build/compiler options/other/compiller logging/
 
il y a la possibilite d'afficher les lignes de commande en entieres, ce qui peut apporter une source d'info supplementaire :-)
 
 
merci en tout cas pour ton aide ;-)

Reply

Marsh Posté le 28-02-2006 à 23:46:34    

il ne te génère pas un makefile ?

Reply

Marsh Posté le 02-03-2006 à 01:31:31    

non il ne fait pas de makefile.
 
par contre j'ai une autre question qui va peut etre semblee conne:
 
quelle difference entre:
 
libSDL.a
libSDL.dll.a
libSDL.la
libSDLmain.a
SDL.lib
SDLmain.lib
 
qui a besoin de quoi pour linker?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed