Menu

Bug avec SDL2 : ld returns 1 exit status [Résolu]

Fabio - 11 avril 2018 à 16:12 - Dernière réponse :  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))
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
[Dal] 4684 Messages postés mercredi 15 septembre 2004Date d'inscriptionContributeurStatut 9 juillet 2018 Dernière intervention - Modifié par [Dal] le 11/04/2018 à 17:41
1
Merci
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

Merci [Dal] 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

CCM a aidé 22592 internautes ce mois-ci

Commenter la réponse de [Dal]
Commenter la réponse de Fabio