Developpez.com

Télécharger gratuitement le magazine des développeurs, le bimestriel des développeurs avec une sélection des meilleurs tutoriels

SDL 2.0 Template pour Code::Blocks

Présentation
Voici la base d'un projet utilisant la SDL 2.0 pour Code::Blocks sous Windows.

Le projet est configuré afin de démarrer rapidement une nouvelle application SDL. Aucune bibliothèque additionnelle n'a été ajoutée et donc seule la SDL est incluse. Le code source est simpliste et commenté. Il ouvre une fenêtre SDL et la referme au bout de trois secondes.

L'avantage d'un tel projet contrairement aux différents tutoriels du net est que la SDL est incluse directement dans le projet et permet une distribution du code source simple et efficace. Ce template a été créé pour accompagner le tutoriel d'installation de la SDL 2.0.

Pour Linux, il ne devrait pas y avoir grand chose à modifier.
Téléchargement
Compatibilité
Windows
4  0 
Téléchargé 827 fois Voir les 16 commentaires
Détails
Avatar de Alexandre Laurent
Responsable 2D/3D/Jeux
Voir tous les téléchargements de l'auteur
Licence : Gratuit
Date de mise en ligne : 20 août 2013




Avatar de VampireGirl VampireGirl - Futur Membre du Club https://www.developpez.com
le 15/09/2013 à 0:23
C'est génial ! Mais je me demande :

J'ai essayé moi même de construire un projet en ajoutant SDL 2.0.
J'obtiens une erreur "undefined WinMain@16", apparemment récurrente. La solution est d'ajouter libmingw32, ce que j'ai fait, sans succès.

Comment as-tu fais ? Je précise que si j'utilise ton projet ça marche, mais si je remplace par les libs téléchargées sur le site officielles, ça ne marche plus.
J'ai aussi remarqué que tes fichiers sont plus légers. As-tu toi même compiler SDL ?

Je te remercie d'avance !
Avatar de LittleWhite LittleWhite - Responsable 2D/3D/Jeux https://www.developpez.com
le 15/09/2013 à 9:13
Il y a une possible explication ici : http://c.developpez.com/faq/?page=di...DIVERS_WinMain

Sinon, normalement, libmingw32 résout le problème (j'en parle ici : http://alexandre-laurent.developpez....ration/#LV-B-3 ).
Avatar de VampireGirl VampireGirl - Futur Membre du Club https://www.developpez.com
le 15/09/2013 à 13:28
Rebonjour !

J'ai résolu mon problème avant d'aller me coucher hier, voici la solution pour celles et ceux qui auraient le même :

Je n'avais pas pris la bonne version (la i686)
2 L'ordre des fichiers n'était pas bon ! Je devais le mettre ainsi :

libmingw32.a
libSDL2main.a
libSDL2.dll.a
libSDL2.a

Si je ne fais pas ainsi ça ne fonctionne pas.
Merci à toi en tout cas !
Avatar de Kannagi Kannagi - Expert confirmé https://www.developpez.com
le 15/09/2013 à 14:02
Erreur "undefined WinMain@16" signifie que ton main n'est pas un main valide ,sur Windows un main valide en GUI c'est :
Code : Sélectionner tout
1
2
3
 
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, 
                                                 LPSTR lpCmdLine, int nCmdShow);
Si on veut faire du code portable et pas link mingw32 il suffit juste de mettre ceci :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
 
#ifdef __MINGW32__ 
#undef main 
#endif 
 
int main() 
{ 
 
      return 0; 
}
Du coup inutile de changer le link en passant de windows/linux/autre , par contre un simple -lSDL2 suffit il me semble sur code block en peut écrire aussi de cette manière dans les link :
Code : Sélectionner tout
SDL2
Avatar de jean_kevin_musclor jean_kevin_musclor - Inactif https://www.developpez.com
le 12/10/2013 à 21:56
J'ai eu la même erreur de compilation "undefined WinMain@16"

Elle se produit quand j'essaye d'utiliser SDL 2.0 64 bit.

Ca vient apparemment du compileur GNU, pas de SDL, pourtant j'ai téléchargé la dernière version... bon tant pis, la version 32 bit elle marche.

Sinon, merci à Alexandre pour son tutoriel simple et clair.
Avatar de LittleWhite LittleWhite - Responsable 2D/3D/Jeux https://www.developpez.com
le 19/10/2013 à 19:22
Oui, pour que la version SDL 64 bits fonctionnent, il faut utiliser la version 64 bits de MinGW, sinon, il ne trouvera pas les fonctions (simplement, il ne chargera pas les bibliothèques, car il n'est pas capable de lire celles-ci).
Avatar de moussadu94 moussadu94 - Candidat au Club https://www.developpez.com
le 01/01/2014 à 22:36
J'ai passé des heures a essayer de configurer code blocks
Avatar de Franck.H Franck.H - Rédacteur https://www.developpez.com
le 18/01/2014 à 19:53
J'ai exactement la même erreur. En compilant ton projet aucun soucis mais avec le miens qui est normalement configuré de la même façon avec juste l’arborescence des dossiers qui changent mais j'ai des chemins relatifs générés par C::B lors de l'ajout des lib etc...

De quoi cela peut bien provenir ?!

Tout est là, la libmingw32.a également

EDIT:
En fait, en prenant les lib de ton projet ça fonctionne, moi j'ai téléchargé la dernière version, quelle serait alors la différence (oui j'ai bien pris la version 32 pour MingW32 ) ?
Avatar de LittleWhite LittleWhite - Responsable 2D/3D/Jeux https://www.developpez.com
le 18/01/2014 à 19:59
Quelles bibliothèques avez-vous installer ? Si vous prenez la SDL 2 (version 64 bits), ça risque de ne pas fonctionner car le compilateur est 32 bits seulement (car MinGW compile en 32 bits).
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.
Responsable bénévole de la rubrique 2D - 3D - Jeux : LittleWhite -