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 :

Erreurs compilation


Sujet :

SDL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Apprenti
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Points : 30
    Points
    30
    Par défaut Erreurs compilation
    Bonjour,

    voici en pièce jointe et ici un code , j'ai pu supprimer un certain nombre d'erreurs, mais malgré cela à la compilation linux, j'ai encore des messages d'erreur.

    J'ai téléchargé SDL, l'ai decompressé, et je l'ai renommé SDL(au lieu de SDL-1.2 ou quelque chose de ce style), SDL.h se trouve dans le sous-repertoire include, raison pour laquelle, j'ai dû ajouter en en-tête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include <include/SDL.h>
    et ma ligne de compilation est :

    où je pense que le -I sert à dire qu'il faut chercher le bon repertoire SDL(mais je n'ai pas réussi à trouver des renseignements précis sur internet à ce sujet).

    Finalement, j'ai un message d'esseur du compilateur comme quoi SDL_init n'est pas reconnu.

    Merci de votre aide.

    Cordialement


    ps, voici le code:
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    #include <stdlib.h>    // pour la fonction exit() ,atexit()
    #include <stdio.h>        // pour printf
    #include "include/SDL.h" // Librairie SDL
     
    //using namespace std;   problème : faire reconnaître SDL_init
     
    SDL_Surface *screen;
     
    //Initialisation du rendu graphique :
    void initSDL(void){
         if( SDL_Init( SDL_INIT_VIDEO ) < 0 )
        {
            printf ( "Impossible d'initialiser SDL:  %s\n", SDL_GetError( )) ;
            exit( EXIT_FAILURE );
        }
     
        atexit( SDL_Quit );
        screen = SDL_SetVideoMode( 640, 480, 16, SDL_HWSURFACE );
     
        if( screen == NULL )
        {
            printf (  "Impossible d'initialiser le mode vidéo: %s\n", SDL_GetError( ) );
            exit( EXIT_FAILURE );
        }   
    }
     
    //Fermer la fenetre graphique lors de l'appuie d'une touche:
    void wait(void)
    {
      SDL_Event event;
     
      do
        SDL_WaitEvent(&event);
      while (event.type != SDL_QUIT && event.type != SDL_KEYDOWN);
    }
     
    //Actualiser la fenetre graphique.
    void actualiser(void)
    {
      SDL_UpdateRect(screen, 0, 0, 0, 0);
    }
     
    //Methode pour tracer un rectangle dans notre fenetre
    void drawRect(int x, int y, int W, int H){
        SDL_Rect rect;
        rect.x = x;
        rect.y = y;
        rect.w = W;
        rect.h = H;
        SDL_FillRect(screen, &rect, SDL_MapRGB(screen->format, 200, 100, 0));
    }
     
    //Fonction affine discrète: 
    int f(float a,float b,int n){
        return (int)(a*n+b);  
    }
     
     
    int main( int argc, char *argv[ ] )
    {
        initSDL();
        int W=10,H=10;
        // Discrétisation de la droite affine x->ax+b en partant de l'origine (0,0) avec n pixels
        float a=0.5,b=1;
     
    	int n;
        for(n=0;n<10;n++){
                drawRect(n*10,480-f(a,b,n)*10,W,H);
        }
        actualiser();
        wait();
     
        return 0;
    }
    Fichiers attachés Fichiers attachés

  2. #2
    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 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Pour compiler, sous Linux, c'est :
    gcc -lSDL -IrepertoireDesEntetes -LrépertoireDesSO
    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.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Apprenti
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Points : 30
    Points
    30
    Par défaut
    1) N'y a-t-il pas un espace entre I et SDL ? Pourquoi met-on le I devant SDL ?

    2) de même qu'entre I et répertoire des en-têtes , n'y-a-t-il pas un espace ?

    3) Que signifie des SO dans "repertoire des SO" ?

    Je vous pose ces questions, car je remarque que selon les versions, les lignes de commande diffèrent.

    j'ai cherché un tutoriel où les options de compilation peuvent être expliquées, ainsi que cette "histoire" d'espace , mais je n'ai pas trouvé.

    Merci

  4. #4
    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 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut
    Citation Envoyé par humanite Voir le message
    1) N'y a-t-il pas un espace entre I et SDL ? Pourquoi met-on le I devant SDL ?
    Il n'y ai pas généralement et il n'est pas obligatoire.

    2) de même qu'entre I et répertoire des en-têtes , n'y-a-t-il pas un espace ?
    c'est un l majuscule et pareil que pour 1)

    3) Que signifie des SO dans "repertoire des SO" ?
    les fichier .so (de la bibliothèque)

    Sinon vous devriez regarder ceci : http://loka.developpez.com/tutoriel/sdl/installation/
    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.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Apprenti
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Points : 30
    Points
    30
    Par défaut
    Voici la ligne de commande que j'ai tapée cette fois :

    gcc -lSDL sdtTest2.c

    et voici les messsages d'erreur :

    sdlTest2.c: In function ‘initSDL’:
    sdlTest2.c:11: error: ‘SDL_INIT_VIDEO’ undeclared (first use in this function)
    sdlTest2.c:11: error: (Each undeclared identifier is reported only once
    sdlTest2.c:11: error: for each function it appears in.)
    sdlTest2.c:17: error: ‘SDL_Quit’ undeclared (first use in this function)
    sdlTest2.c:18: error: ‘screen’ undeclared (first use in this function)
    sdlTest2.c:18: error: ‘SDL_HWSURFACE’ undeclared (first use in this function)
    sdlTest2.c: In function ‘wait’:
    sdlTest2.c:30: error: ‘SDL_Event’ undeclared (first use in this function)
    sdlTest2.c:30: error: expected ‘;’ before ‘event’
    sdlTest2.c:33: error: ‘event’ undeclared (first use in this function)
    sdlTest2.c:34: error: ‘SDL_QUIT’ undeclared (first use in this function)
    sdlTest2.c:34: error: ‘SDL_KEYDOWN’ undeclared (first use in this function)
    sdlTest2.c: In function ‘actualiser’:
    sdlTest2.c:40: error: ‘screen’ undeclared (first use in this function)
    sdlTest2.c: In function ‘drawRect’:
    sdlTest2.c:45: error: ‘SDL_Rect’ undeclared (first use in this function)
    sdlTest2.c:45: error: expected ‘;’ before ‘rect’
    sdlTest2.c:46: error: ‘rect’ undeclared (first use in this function)
    sdlTest2.c:50: error: ‘screen’ undeclared (first use in this function)

    Les mots-clefs du type :SDL_INIT_VIDEO (ainsi que tous ceux apparaissant dans le message d'erreur) étant connus de la librairie SDL, j'en déduis qu'il manque des choses dans ma ligne de commande. Mais conformément au renseignement que vous m'avez donné, je ne sais pas ce qu'il faut mettre à la place de : répertoire des en-têtes et repertoire des so, c'est peut-être à cause de cela que je bloque.

    Je tape aussi :

    gcc -lSDL -I include sdlTest2.c

    mais ça ne marche toujours pas.

    Juste pour rappel, j'ai sur le Desktop :

    un répertoire renommé SDL avec tout les programmes téléchargés.

    Dedans, il y a un répertoire include, qui contient lui-même, SDL.h


    EN FAIT, J'ai l'impression que le compilateur ne trouve pas les librairies adéquates.
    Lorsque j'ai installé SDl, voici ce que j'ai fait :

    je suis allé sur le lien suivant

    http://www.libsdl.org/download-1.2.php

    puis j'ai cliqué sur le premeir lien dans "source code".

    j'ai téléchargé. Puis, j'ai fait clique droit, extraire sur le bureau. Et j'ai simplement renommé SDL le repertoire.

    Mais vus les messages d'erreur, je commence à me demander si j'ai un répertoire contenant les librairies.

  6. #6
    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 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut
    Pouvez vous me dire sur quelle distribution de Linux vous êtes ?

    Il semble qu'il manque l'inclusion du .h, si vous avez ces erreurs.
    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.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Apprenti
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    je suis sur un version Debian. Pouvez-vous m'aider ?

    Dans mon fichier sdlTest2.c, j'ai bien inclus un SDL.h pourtant

    Moi, je pense que c'est surtout la librairie contenant le corps des fonctions déclarées dans les.h , qui n'est pas présente.

    Mais, au final, je ne sais pas.

  8. #8
    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 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut
    Ok, parfait. Sous Debian, en ayant installé les paquets libsdl1.2-dev et libsdl1.2debian , compilez avec la commande suivante :
    gcc -Wall -Wextra -lSDL sdtTest2.c -o sdlTest2
    Les flags -Wall et -Wextra sont pour dire à gcc d'afficher le plus d'avertissements possibles sur des problèmes de code.

    Veuillez modifier cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include "include/SDL.h"
    en :
    Et normalement, ça devrait compiler.
    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.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Apprenti
    Inscrit en
    Décembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Décembre 2010
    Messages : 86
    Points : 30
    Points
    30
    Par défaut
    Je ne pense pas avoir ces paquets

    libsdl1.2-dev et libsdl1.2debian

    car là il s'agit des librairies et pas des fichiers .h d'en-tête apparemment.

    Lorsque j'exécute tel que ce que vous m'avez dit, voic les messages d'erreur :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     gcc -Wall -Wextra -lSDL sdlTest2.c -o sdlTest2sdlTest2.c:3:38: error: SDL/SDL.h: Aucun fichier ou répertoire de ce type
    sdlTest2.c:10: error: expected ‘=’, ‘,’, ‘;’, ‘asmor ‘__attribute__’ before ‘*’ token
    sdlTest2.c: In function ‘initSDL’:
    sdlTest2.c:13: warning: implicit declaration of function ‘SDL_Init’
    sdlTest2.c:13: error: ‘SDL_INIT_VIDEO’ undeclared (first use in this function)
    sdlTest2.c:13: error: (Each undeclared identifier is reported only once
    sdlTest2.c:13: error: for each function it appears in.)
    sdlTest2.c:15: warning: implicit declaration of function ‘SDL_GetError’
    sdlTest2.c:15: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’
    sdlTest2.c:19: error: ‘SDL_Quit’ undeclared (first use in this function)
    sdlTest2.c:20: error: ‘screen’ undeclared (first use in this function)
    sdlTest2.c:20: warning: implicit declaration of function ‘SDL_SetVideoMode’
    sdlTest2.c:20: error: ‘SDL_HWSURFACE’ undeclared (first use in this function)
    sdlTest2.c:24: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’
    sdlTest2.c: In function ‘wait’:
    sdlTest2.c:32: error: ‘SDL_Event’ undeclared (first use in this function)
    sdlTest2.c:32: error: expected ‘;’ before ‘event’
    sdlTest2.c:35: warning: implicit declaration of function ‘SDL_WaitEvent’
    sdlTest2.c:35: error: ‘event’ undeclared (first use in this function)
    sdlTest2.c:36: error: ‘SDL_QUIT’ undeclared (first use in this function)
    sdlTest2.c:36: error: ‘SDL_KEYDOWN’ undeclared (first use in this function)
    sdlTest2.c: In function ‘actualiser’:
    sdlTest2.c:42: warning: implicit declaration of function ‘SDL_UpdateRect’
    sdlTest2.c:42: error: ‘screen’ undeclared (first use in this function)
    sdlTest2.c: In function ‘drawRect’:
    sdlTest2.c:47: error: ‘SDL_Rect’ undeclared (first use in this function)
    sdlTest2.c:47: error: expected ‘;’ before ‘rect’
    sdlTest2.c:48: error: ‘rect’ undeclared (first use in this function)
    sdlTest2.c:52: warning: implicit declaration of function ‘SDL_FillRect’
    sdlTest2.c:52: error: ‘screen’ undeclared (first use in this function)
    sdlTest2.c:52: warning: implicit declaration of function ‘SDL_MapRGB’
    sdlTest2.c: At top level:
    sdlTest2.c:61: warning: unused parameter ‘argc’
    sdlTest2.c:61: warning: unused parameter ‘argv’
    Mon problème vient peut-être du téléchargement des librairies qui contiennent vraiment le corps des fonctions

  10. #10
    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 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut
    Citation Envoyé par humanite Voir le message
    Je ne pense pas avoir ces paquets

    libsdl1.2-dev et libsdl1.2debian
    Alors, installez les, car c'est pour avoir les paquets de développement de la SDL.

    Commande pour ce faire :
    sudo aptitude install libsdl1.2-dev et libsdl1.2debian
    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.

Discussions similaires

  1. RXControl RxRichEdit ERREUR Compilation
    Par loleske dans le forum C++Builder
    Réponses: 2
    Dernier message: 25/02/2005, 18h12
  2. [FreePascal] Erreur compilation ou défaut Dev-Pascal ?
    Par molesqualeux dans le forum Free Pascal
    Réponses: 5
    Dernier message: 27/12/2004, 10h00
  3. [Débutant]Erreur compilation !
    Par gandalf_le_blanc dans le forum AWT/Swing
    Réponses: 23
    Dernier message: 30/08/2004, 14h23
  4. Trop de message d'erreurs: compilation KO
    Par jeannot27 dans le forum C++Builder
    Réponses: 6
    Dernier message: 21/01/2004, 16h45
  5. Erreur compilation DX8.1 VC++ 6
    Par d.vidal dans le forum DirectX
    Réponses: 1
    Dernier message: 10/09/2003, 09h04

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