IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

Retour à SDL après 10 ans d'absence


Sujet :

SDL

  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut Retour à SDL après 10 ans d'absence
    Bonjour

    Je reviens sur mes très anciens codes de test que j'avais fait en SDL et j'essaie à nouveau de les compiler. J'ai du me refaire un makefile :
    Code Makefile : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    CC=gcc
     
    CFLAGS= -W -Wall $(shell sdl-config --cflags)
    LDFLAGS=-export-dynamic $(shell sdl-config --libs)
     
    EXEC=perso
    SRC= $(wildcard *.c)
     
     
    OBJ= $(SRC:.c=.o)
     
    all: $(EXEC)
     
    $(EXEC) : $(OBJ)
    		$(CC) -o $@ $^ $(LDFLAGS)
     
     
    %.o: %.c include.h
    		$(CC) -o $@ -c $< $(CFLAGS)

    Première découverte, c'est la sortie de SDL2, si je tente une compilation avec SDL2, j'ai beaucoup plus d'erreurs car il ne reconnaît pas SDL_HWSURFACE ou SDL_DOUBLEBUF par exemple. Est-ce que la migration est facile ?
    Après, j'ai mis sdl à la place de sdl2 dans les commandes. Cette fois, j'ai un problème : les variables de type bool ne sont pas reconnues. Il manque quoi et où ?

    Les biblithèques que j'ai mises sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #ifdef __cplusplus
        #include <cstdlib>
    #else
        #include <stdlib.h>
    #endif
    #ifdef __APPLE__
    #include <SDL/SDL.h>
    #else
    #include <SDL.h>
    #endif
    L'erreur est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    main.c: Dans la fonction «*main*»:
    main.c:48:5: erreur: nom de type «*bool*» inconnu
       48 |     bool done = false;
          |     ^~~~
    main.c:48:17: erreur: «*false*» non déclaré (première utilisation dans cette fonction); vouliez-vous utiliser «*fclose*»*?
       48 |     bool done = false;
          |                 ^~~~~
          |                 fclose
    main.c:48:17: note: chaque identificateur non déclaré est rapporté une seule fois pour chaque fonction dans laquelle il apparaît
    main.c:60:24: erreur: «*true*» non déclaré (première utilisation dans cette fonction)
       60 |                 done = true;
          |                        ^~~~
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  2. #2
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Bonjour

    Pour palier le problème avec les booléens, j'ai rajouté ces lignes de codes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #define false 0
    #define true 1
    typedef char bool;
    mais, j'aimerai savoir pourquoi ce problème est apparu.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Bonsoir

    Je continue de parcourir les petits fichiers de test que j'avais fait.

    Cette fois, je trouve un code avec SDL_HWSURFACE ou SDL_DOUBLEBUF qui ne passe pas la compilation avec SDL2, mais il a aussi des fonctions qui ne passent qu'avec SDL2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    main.c:(.text+0xcfd)*: référence indéfinie vers «*TTF_OpenFont*»
    /usr/bin/ld*: main.c:(.text+0xd10)*: référence indéfinie vers «*TTF_OpenFont*»
    /usr/bin/ld*: main.c:(.text+0xd50)*: référence indéfinie vers «*TTF_RenderUTF8_Solid*»
    /usr/bin/ld*: main.c:(.text+0xdb1)*: référence indéfinie vers «*TTF_RenderUTF8_Solid*»
    collect2: erreur: ld a retourné le statut de sortie 1
    J'aurais oublié d'installer quoi ?
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  4. #4
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    SDL_TTF je pense.

  5. #5
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Je l'ai installée. Voici ce que me dit mon système :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Le paquetage lib64SDL_ttf-devel-2.0.11-11.mga8.x86_64 est déjà installé
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  6. #6
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Ce n'est pas le probleme , le compilo dit que tu ne l'as pas link (doit manquer un lSDL_ttf où un truc du genre ).

  7. #7
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Je suis bien d'accord avec toi.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  8. #8
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Pour aller plus loin, voici la commande de compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -o area couleur.o main.o -export-dynamic -L/usr/lib64 -lSDL
    Les librairies qu'il va chercher sont dans /usr/lib64 et elle y sont bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    [troumad@localhost area_erisi2]$ ll /usr/lib64/libSDL_*
    lrwxrwxrwx 1 root root     20 févr. 14  2020 /usr/lib64/libSDL_gfx.so -> libSDL_gfx.so.16.9.1*
    lrwxrwxrwx 1 root root     20 févr. 14  2020 /usr/lib64/libSDL_gfx.so.16 -> libSDL_gfx.so.16.9.1*
    -rwxr-xr-x 1 root root  92816 févr. 14  2020 /usr/lib64/libSDL_gfx.so.16.9.1*
    lrwxrwxrwx 1 root root     25 févr. 18  2020 /usr/lib64/libSDL_image-1.2.so.0 -> libSDL_image-1.2.so.0.8.4*
    -rwxr-xr-x 1 root root  65632 févr. 18  2020 /usr/lib64/libSDL_image-1.2.so.0.8.4*
    lrwxrwxrwx 1 root root     25 févr. 18  2020 /usr/lib64/libSDL_image.so -> libSDL_image-1.2.so.0.8.4*
    lrwxrwxrwx 1 root root     26 nov.   3 19:57 /usr/lib64/libSDL_mixer-1.2.so.0 -> libSDL_mixer-1.2.so.0.12.0*
    -rwxr-xr-x 1 root root 178312 nov.   3 19:57 /usr/lib64/libSDL_mixer-1.2.so.0.12.0*
    lrwxrwxrwx 1 root root     26 nov.   3 19:57 /usr/lib64/libSDL_mixer.so -> libSDL_mixer-1.2.so.0.12.0*
    lrwxrwxrwx 1 root root     23 févr. 14  2020 /usr/lib64/libSDL_net-1.2.so.0 -> libSDL_net-1.2.so.0.8.0*
    -rwxr-xr-x 1 root root  24024 févr. 14  2020 /usr/lib64/libSDL_net-1.2.so.0.8.0*
    lrwxrwxrwx 1 root root     23 févr. 14  2020 /usr/lib64/libSDL_net.so -> libSDL_net-1.2.so.0.8.0*
    lrwxrwxrwx 1 root root     21 févr. 14  2020 /usr/lib64/libSDL_Pango.so -> libSDL_Pango.so.1.1.0*
    lrwxrwxrwx 1 root root     21 févr. 14  2020 /usr/lib64/libSDL_Pango.so.1 -> libSDL_Pango.so.1.1.0*
    -rwxr-xr-x 1 root root  23880 févr. 14  2020 /usr/lib64/libSDL_Pango.so.1.1.0*
    lrwxrwxrwx 1 root root     25 avril 20  2020 /usr/lib64/libSDL_sound-1.0.so.1 -> libSDL_sound-1.0.so.1.0.2*
    -rwxr-xr-x 1 root root 179432 avril 20  2020 /usr/lib64/libSDL_sound-1.0.so.1.0.2*
    lrwxrwxrwx 1 root root     25 avril 20  2020 /usr/lib64/libSDL_sound.so -> libSDL_sound-1.0.so.1.0.2*
    lrwxrwxrwx 1 root root     24 févr. 14  2020 /usr/lib64/libSDL_ttf-2.0.so.0 -> libSDL_ttf-2.0.so.0.10.1*
    -rwxr-xr-x 1 root root  32272 févr. 14  2020 /usr/lib64/libSDL_ttf-2.0.so.0.10.1*
    lrwxrwxrwx 1 root root     24 févr. 14  2020 /usr/lib64/libSDL_ttf.so -> libSDL_ttf-2.0.so.0.10.1*
    Comme j'utilise une version de test de Mageia Linux, je viens de tester sur la version courante et sur l'ancienne (encore maintenue), j'ai le même problème. Il y a aussi IMG_Load qui me pose problème.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  9. #9
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    On vient de me donner un coup de main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LDFLAGS=-export-dynamic $(shell sdl-config --libs) -lSDL_image -lSDL_ttf
    Mon problème est pourquoi sdl-config --libs ne marche pas complètement et que je dois rajouter à la main -lSDL_image -lSDL_ttf ? Dans ce cas, il sert à quoi ?
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  10. #10
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Disons que SDL_image et SDL_ttf sont plus des extensions ,donc doit pas etre pris en compte par sdlconfig.
    Il sert à link la SDL de base , pas ces extensions :p

  11. #11
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Une autre solution pour les booléens : utiliser g++ à la place de GCC. Il compilera le code pareil (ou presque?) et reconnaîtra les true/false.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Retour en France apres 10 ans a Londres
    Par LeRosbif dans le forum Emploi
    Réponses: 65
    Dernier message: 13/09/2013, 14h32
  2. [WD14] Aide suite à un retour à WD après très longue absence
    Par jauniau dans le forum WinDev
    Réponses: 1
    Dernier message: 15/10/2012, 13h47
  3. Retour sur LaTeX après 2 ans d'absence
    Par delight dans le forum Erreurs - Avertissements
    Réponses: 20
    Dernier message: 04/06/2012, 14h42
  4. Réponses: 3
    Dernier message: 13/04/2007, 11h08
  5. Tableau : retour chariot après chaque valeur
    Par kafifi dans le forum Langage
    Réponses: 3
    Dernier message: 13/07/2006, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo