Démarrer un projet SDL 2.0 avec Code::Blocks sous Windows

La mise en place d’un projet SDL 2.0 avec Code::Blocks sous Windows présente son lot d’obstacles. Bien que Code::Blocks 16.01 fournisse un assistant de création de projets SDL, celui-ci est prévu pour fonctionner avec SDL 1.2, la version majeure précédente. Le code C produit par l’assistant fait appel à des fonctions obsolètes et le script de ce dernier n’est pas adapté à la structure de la bibliothèque de développement SDL 2.0 que nous allons télécharger. Je n’ai pas été convaincu par les solutions que j’ai pu trouver sur Internet, notamment celles qui aboutissent à la copie de SDL dans MinGW. Voici donc comment je m’y prends…

Installer SDL 2.0

Télécharger et décompresser SDL2-devel-2.0.4-mingw.tar.gz dans C:\. Le répertoire C:\SDL2-2.0.4 obtenu contient les bibliothèques 32 bits dans C:\SDL2-2.0.4\i686-w64-mingw32 et 64 bits dans C:\SDL2-2.0.4\x86_64-w64-mingw32.

Créer le projet dans Code::Blocks

Créer un nouveau projet : menu File | New | Project… Sélectionner Console Application et dérouler l’assistant jusqu’à son terme.

Paramétrer les chemins pour la recherche des entêtes et des bibliothèques

Le PC sur lequel je travaille ayant une architecture 32 bits, les chemins que je choisis sont tous dans C:\SDL2-2.0.4\i686-w64-mingw32.

Dans la vue Workspace, clic droit sur le nom du projet | Build options…

Par défaut, Code::Blocks sélectionne la cible Debug, alors que le paramétrage que nous voulons réaliser vaut pour toutes les cibles. Pour indiquer cela, dans la fenêtre de dialogue, cliquer sur le nom du projet.

Dans l’onglet Search directories, sous-onglet Compiler, ajouter le chemin C:\SDL2-2.0.4\i686-w64-mingw32\include. À la question « Keep this a relative path », je réponds non : je ne tiens pas à lier l’espace de travail et les bibliothèques installées sur la machine.

Dans le sous-onglet Linker, ajouter le chemin C:\SDL2-2.0.4\i686-w64-mingw32\lib.

Dans l’onglet Linker settings, ajouter mingw32, SDL2main et SDL2.

Je commence à coder, puis je builde le projet. Une erreur se manifeste…

Pour résoudre le problème, je copie le fichier C:\SDL2-2.0.4\i686-w64-mingw32\bin\SDL2.dll dans le répertoire bin\Debug de mon projet. Je ferai de même lorsque je builderai en Release.

Troubleshooting

L’assistant de création de projets Console Application génère une fonction int main() au lieu de la fonction int main(int argc, char **argv) attendue par SDL lors de l’édition de liens. Cela se traduit dans le log par l’erreur : undefined reference to `SDL_main’. Il suffit de corriger la signature de la fonction pour résoudre le problème.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *