Bug avec SDL2 : ld returns 1 exit status

Résolu/Fermé
Fabio - 11 avril 2018 à 16:12
 Fabio - 17 avril 2018 à 13:33
J'essaye de faire tourner un début code basique sous SDL2 et voilà qu'il refuse de compiler.
Dans le "build log" (car je suis sous code blocks) il me dit "référence indéfinie vers" toutes mes fonctions SDL.
Qu'est-ce que ça veut dire ?
Code :
#include <SDL2/SDL.h>

#include <stdio.h>

int main(int argc, char** argv)
{
/* Initialisation simple */
    if (SDL_Init(SDL_INIT_VIDEO) != 0 )
    {
        fprintf(stdout,"Échec de l'initialisation de la SDL (%s)\n",SDL_GetError());
        return -1;
    }


    SDL_Quit();

    return 0;
}

Buil log :
g++  -o bin/Debug/Boxing obj/Debug/main.o   
obj/Debug/main.o : Dans la fonction « main » :
/home/fabio/Documents/C/Boxing/main.cpp:8 : référence indéfinie vers « SDL_Init »
/home/fabio/Documents/C/Boxing/main.cpp:10 : référence indéfinie vers « SDL_GetError »
/home/fabio/Documents/C/Boxing/main.cpp:15 : référence indéfinie vers « SDL_Quit »
collect2: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
1 error(s), 0 warning(s) (0 minute(s), 0 second(s))

2 réponses

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 11 avril 2018 à 17:41
Salut Fabio,

Ce n'est pas un "bug" mais une erreur de paramétrage.

Tu as dû juste insérer le header dans le code, mais oublié de paramétrer ton projet pour lier l'exécutable à la bibliothèque SDL2.

D'abord vérifie que tu crées un projet Codeblocks de type "Console" (et en C à moins que tu veuilles vraiment faire du C++) et met ton code dedans.

Puis fais Project - Build options - et clique sur le nom du projet en haut à gauche de la boite de dialogue à la racine au dessus de Debug et Release (pour appliquer tes paramètres aux deux cibles de compilation).

Puis clique sur Linker settings - Link libraries - Add - tape "SDL2" (sans les guillemets)

valide toutes les boites, sauvegarde le projet et recompile pour voir.


Dal

P.S. : je pars du principe que tu es sous Linux au vu du "Build log" (les instructions seraient différentes sous Windows) et que tu as installé le paquet SDL2 développeur sur ta distribution Linux
1
Nickel Merci !
0