J'ai récemment cherché à essayer la SDL2, pour pouvoir comparer avec d'autres API. Même si c'est une bibliothèque C, j'ai cru comprendre que grosso modo, tout code C est compatible avec C++ (à quelques exceptions près pour certaines lib système) et qu'il n'y aurait donc pas de problème, pleins de développeurs l'ayant déjà fait. Je suis sous Code::Blocks (version 20.3, la dernière) et j'ai suivi des tutos sérieux en ligne qui expliquent la démarche à suivre (Zeste de savoir, openclassroom, dvlpt.com, etc...). L'idée est sans surprise toujours la même : on télécharge la lib, on choisit bien la version de minGW qui nous correspond, à savoir 64bits pour moi, et on crée une arborescence dans notre projet avec les headers dans un dossier "include", les fichiers objets/binaires dans un dossier "lib" ainsi que les sources (.cpp) dans un dossier "src". On paramètre le compilateur et le linker pour qu'ils sachent où tout trouver (via Settings -> Compiler... -> Search Directories pour les connaisseurs). On crée ensuite une application console ou bien un projet vide, on oublie pas d'inclure les bibliothèques au projet ainsi que de paramétrer le linker. Dans mon cas, ça donne :
Je précise que je cherche à compiler en statique, càd sans DLL, pour avoir quelque chose de plus compact et portatif, d'où les ajouts de fichiers binaires à rallonge.
Tout marche alors, pas la moindre erreur ni avertissement de la part du compilateur (minGW 64bits), le programme se lance et crash inexorablement, renvoyant le code 32762, ("Process returned 32762 (0x7FFA)"). Quoi que je fasse, même en compilant sous C, ou bien en joignant la .dll (SDL2.dll) que je n'utilise pas, en écrivant un code minimal basique censé initialiser SDL2, en configurant mon projet comme étant une "GUI Application", en essayant d'autres versions de Code::Blocks (minGW 32bits), en essayant de trafiquer le code source de SDL2 (effet désastreux pour le coup) ou bien encore en essayant les "#include SDL_..." ou "#undef main" et Cie, etc, etc..... Rien n'y fait, le programme crashe. Et c'est seulement quand je supprime la première ligne (#include <SDL2/SDL.h>) que le programme renvoie bien 0. C'est comme si le simple fait d'inclure la SDL2 ou de n'utiliser ne serait-ce qu'une demi ligne de son code source faisait crasher l'exécutable que produit minGW.
J'ai cherché durant des heures et des heures, retourné les fins fonds de StackOverflow, de dvlpt.com et même de ce forum ou de sites plus obscurs, rien de chez rien. À croire que ça marche chez tout le monde sauf chez moi. C'est vraiment incompréhensible, je me casse les dents sur ce problème et vous êtes comme mon derniers secours.... Je ne pense pas avoir fait d'erreur, impression confortée par le fait que je n'aie pas le moindre problème avec le linker ou bien le compilateur en lui-même. Mais l'exécutable crash, sans ménagement. Ou bien Windows me sort un : "cette application ne peut pas s'exécuter sur votre PC". Où est diable mon erreur ? Où est-ce que j'ai fait une gaffe selon vous ? Comment vous avez utilisé la SDL2 de votre côté, si tel est le cas ? J'attends avec enthousiasme vos réponses.....
Merci de ton retour. En effet, je me suis posé la question : mais quel IDE utiliser ? Sachant que je n'aime pas Visual Studio+, à cause de sa complexité et de sa licence propriétaire un peu contraignante. Quel IDE utilisez-vous de votre côté ?
Sinon, concernant la compatibilité de Code::Blocks, j'avoue que la réflexion mérite d'être prise. Mais c'est tellement incompréhensible, sachant que le compilateur, c'est MinGW ! J'ai bien fait attention, je suis sous 64bits et j'ai lu des dizaines et des dizaines de tutos, j'ai linké les bonnes libs et inclut les bons header. Alors pourquoi des dizaines et des dizaines de dev, encore à l'heure actuelle peuvent-ils utiliser tout ça sans problème et moi je me retrouve avec un programme sans aucune erreur ni warnigs mais qui crash systématiquement ? D'autant plus que ce n'est pas un problème de compilation ou de linkage. Tout ce passe bien mais ça crash, c'est un peu comme un bébé mort-né (pour imager bien-sûr, toute raison gardée bien entendue ). C'est ça qui me perturbe, j'avoue que ça me frustre un peu… Mais oui, si vraiment RIEN ne marche alors je crois que j'irais voir ailleurs. Sinon, est-ce que vous pensez que si je télécharge le code source (.cpp) de la SDL2 et que je le recompile à la sauce "code::blocks" avec des fichiers objet (.o), ça pourrait changer quelque chose ? Merci pour votre temps !
Merci de ton retour. En effet, je me suis posé la question : mais quel IDE utiliser ? Sachant que je n'aime pas Visual Studio+, à cause de sa complexité et de sa licence propriétaire un peu contraignante. Quel IDE utilisez-vous de votre côté ?
J'utilise Visual C++. Je ne le trouve pas compliqué, et la licence de la version express te permet de faire ce que tu veux chez toi.... Je ne vois pas le soucis que tu as avec.
Alors, je deviens encore hérétique. Pourquoi unIDE. Ça ne se ferait pas directement sous cmd ? Si tu te places sur le bon dossier et tes commandes au compilateur sont correctes?
Le Tout est souvent plus grand que la somme de ses parties.
C'est juste un IDE ,tu peux mettre n'importe quel lib/framework avec ! Il a peut être vieilli , mais il a des options assez avancé qui permet de faire pas mal de choses ,notamment de pouvoir gérer plusieurs compilateur , de faire de la cross-compilation , de faire du pre/post compilation et de customiser l’exécution.
Et c'est pour toute ces raisons que je l'utilise encore.
Pour le soucis du PO, ça serait étonnant que le soucis vient de C::B , pour une simple et bonne raison ,ce n'est pas lui qui créer l’exécutable
Sinon je ne conseille pas vraiment plus C::B mais pour la bonne raison qu'il est assez complexe à configurer pour un débutant.
- Edité par HelbaSama 29 août 2022 à 12:09:38
Erreur fatale avec la SDL2
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Le Tout est souvent plus grand que la somme de ses parties.