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 :

Problème avec librairies SDL/SGE (sge_textEditor)


Sujet :

SDL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Problème avec librairies SDL/SGE (sge_textEditor)
    Bonjour à tous,
    alors voilà, depuis peu je me suis lancé dans le programmation en C++ et maintenant j'ai un projet à faire qui utilise les bibliothèques SDL et SGE. Pour le moment, je dois étudier un ancien projet qui utilise celles-ci, mais voilà je n'arrive pas à compiler ce dernier. Je pense avoir installer les bibliothèques SDL et SGE correctement. J'utilise CodeBlocks. Voilà les types d'erreurs que j'ai lors de la compilation :

    .objs\main.o:main.cpp.text$_ZN8sge_textD1Ev[sge_text::~sge_text()]+0x6b)||undefined reference to `sge_TextEditor::~sge_TextEditor()'|
    J'aimerai donc savoir à quoi est du cette erreur? Si elle vient de l'installation d'une bibliothèque ou alors peut être de l'installation FreeType 2.
    Merci d'avance pour votre aide si précieuse car pour le moment je ne peux avancer.

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    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 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Avez vous bien rajouter les bibliothèque dans l'éditeur de liens ?
    Pouvez vous nous montrer un peu le code, s'il vous plait ?
    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 Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,
    oui j'ai bien liker dans codeblocks (j'ai ajouter les bibliothèques dans "build options"/"linker settings"). Alors bah mon code est un peu long vu que c'est un ancien projet mais j'obtiens exactement la même erreur avec le code suivant que j'ai trouvé sur un sujet qui évoque quasiment le même problème. En fait, il m'affiche l'erreur indiquée plus haut et m'ouvre le fichier "sge_textpp.h" et se place au niveau de la ligne qui évoque sge_textEditor. Voilà la ligne à laquelle il se réfère :
    virtual ~sge_text(void){if(text_surface){SDL_FreeSurface(text_surface);}}

    Et voici un code qui me met l'erreur.
    Est-ce que cela peut venir de freetype?
    Merci pour votre réponse

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/sge.h>
     
    int main(int argc, char** argv)
    {
        /* Init SDL */
        if ( SDL_Init(SDL_INIT_TIMER|SDL_INIT_VIDEO) < 0 )
        {
            fprintf(stderr, "Couldn't load SDL: %s\n", SDL_GetError());
            exit(1);
        }
     
        /* Clean up on exit */
        atexit(SDL_Quit);
     
        /* Set window title */
        SDL_WM_SetCaption("Bouncing ball!", "bounce");
     
        /* Initialize the display */
        SDL_Surface *screen;
        screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);
        if ( screen == NULL )
        {
            fprintf(stderr, "Couldn't set video mode: %s\n", SDL_GetError());
            exit(1);
        }
     
        /* Open TT font file */
        if (sge_TTF_Init()!=0)
        {
            fprintf(stderr,"TT error: %s\n", SDL_GetError());
            exit(1);
        }
        sge_TTFont *font;
        font=sge_TTF_OpenFont("font.ttf", 50);
        if (font==NULL)
        {
            fprintf(stderr,"TT error: %s\n", SDL_GetError());
            exit(1);
        }
     
        /* Make a nice background */
        sge_tt_textout(screen,font,"Super Fun", 160,180, SDL_MapRGB(screen->format, 0, 255, 0),0, SDL_ALPHA_OPAQUE);
        sge_tt_textout(screen,font,"Bouncing Ball!!", 100,260, SDL_MapRGB(screen->format, 0, 255, 0), 0, SDL_ALPHA_OPAQUE);
        sge_TTF_CloseFont(font);
     
        /* Allocate buffers */
        SDL_Surface *buffer,*circle;
        circle=SDL_AllocSurface(SDL_SWSURFACE,100,100,16, 0,0,0,0);
        buffer=SDL_AllocSurface(SDL_SWSURFACE,640,480,16, 0,0,0,0);
     
        /* Draws a filled circle on the circle buffer */
        sge_ClearSurface(circle,0);
        sge_AAFilledCircle(circle,50,50,49, SDL_MapRGB(screen->format, 255, 0, 0));
     
        /* Set the transparity on the circle */
        SDL_SetColorKey(circle, SDL_SRCCOLORKEY, 0); //Set the transparent color
        SDL_SetAlpha(circle, SDL_SRCALPHA|SDL_RLEACCEL, 128);  //Set the alpha blending value
     
        /* Turns off automatic update */
        sge_Update_OFF();
     
        /* Buffers the background */
        sge_Blit(screen,buffer,0,0, 0,0 ,640,480);
     
        Sint32 x=250,y=200,oldx=250,oldy=200;
        bool left=false, down=false;
        int loops=0;
     
        /* Sets start time */
        Uint32 start = SDL_GetTicks();
     
        /* Main loop */
        SDL_Event event;
        do
        {
            SDL_Delay(10);
     
            /* Bounce at screen borders */
            if (x>540)
                left = true;
            else if (x<0)
                left = false;
            if (y>380)
                down = false;
            else if (y<0)
                down = true;
     
            /* Updates coords */
            if (left)
                x-=2;
            else
                x+=2;
            if (down)
                y+=2;
            else
                y-=2;
     
            /* Updates the last area */
            sge_Blit(buffer,screen,oldx-5,oldy-5, oldx-5,oldy-5, 120,120);
            oldx=x;
            oldy=y;
     
            /* Draws the circel */
            sge_Blit(circle,screen,0,0, x,y, 100,100);
     
            /* Updates the screen */
            sge_Update_ON();
            sge_UpdateRect(screen,x-5,y-5,120,120);
            sge_Update_OFF();
     
            /* Calculate fps */
            loops++;
     
            /* Check events */
            if (SDL_PollEvent(&event)==1)
            {
                if (event.type==SDL_KEYDOWN && event.key.keysym.sym==SDLK_ESCAPE)
                {
                    break;
                }
                if (event.type==SDL_QUIT)
                {
                    break;
                }
            }
        }
        while (true);
     
     
        /* Print FPS */
        printf("%.2f FPS (target: 100).\n",((double)loops*1000)/(SDL_GetTicks()-start));
     
        /* Clean up */
        SDL_FreeSurface(buffer);
        SDL_FreeSurface(circle);
     
        return 0;
    }

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,
    j'ai toujours mon problème, personne ne peut m'aider ? Donc je continue à chercher mais avec le peu de connaissances dont je dispose mes recherches ne sont pas très fructueuses. Alors si çà parle à quelqu'un je mets un bout de code qui compile et qui fonctionne mais alors que quand mon projet sous Code::Blocks est un projet C. Quand c'est un projet C++, alors apparait l'erreur au niveau de sge_textEditor Voilà si quelqu'un a déjà eu ce problème ou alors peut avoir une solution pour résoudre mon problème je suis preneur.

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_ttf.h>
    #include <SDL/sge.h>
     
    int main(int argc, char *argv[])
    {
        SDL_Surface *ecran = NULL, *texte = NULL, *page1=NULL;
        SDL_Rect position;
        SDL_Event event;
        TTF_Font *police = NULL;
        SDL_Color couleurNoire = {0, 0, 0}, couleurBlanche = {255, 255, 255};
        int continuer = 1;
        int tempsActuel = 0, tempsPrecedent = 0, compteur = 0;
        char temps[20] = ""; /* Tableau de char suffisamment grand */
     
     
     
        SDL_Init(SDL_INIT_VIDEO);
        TTF_Init();
     
        ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
        SDL_WM_SetCaption("Gestion du texte avec SDL_ttf", NULL);
     
        /* Initialize the display */
        if ( ecran == NULL )
        {
            fprintf(stderr, "Couldn't set video mode: %s\n", SDL_GetError());
            exit(1);
        }
        /* Open TT font file */
        if (sge_TTF_Init()!=0)
        {
            fprintf(stderr,"TT error: %s\n", SDL_GetError());
            exit(1);
        }
        sge_TTFont *font;
        font=sge_TTF_OpenFont("font.ttf", 50);
        if (font==NULL)
        {
            fprintf(stderr,"TT error: %s\n", SDL_GetError());
            exit(1);
        }
     
     
        /* Chargement de la police */
        police = TTF_OpenFont("angelina.ttf", 65);
     
        /* Initialisation du temps et du texte */
        tempsActuel = SDL_GetTicks();
     
        sprintf(temps, "Temps : %d", compteur);
        texte = TTF_RenderText_Shaded(police, temps, couleurNoire, couleurBlanche);
     
     
        /* Turns off automatic update */
        sge_Update_OFF();
     
     
        while (continuer)
        {
            SDL_PollEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
                    break;
            }
     
     
     
            tempsActuel = SDL_GetTicks();
            if (tempsActuel - tempsPrecedent >= 100) // Si 100ms au moins se sont écoulées
            {
                compteur += 100; // On rajoute 100ms au compteur
                sprintf(temps, "Temps : %d", compteur); // On écrit dans la chaîne "temps" le nouveau temps
                SDL_FreeSurface(texte); // On supprime la surface précédente de la mémoire avant d'en charger une nouvelle (IMPORTANT)
                texte = TTF_RenderText_Shaded(police, temps, couleurNoire, couleurBlanche); // On écrit la chaine temps dans la SDL_Surface
                //sge_Rect(ecran,0,0,512,600,SDL_MapRGB(ecran->format, 255, 255, 255));
                sge_tt_textout(ecran,font,temps, 10,180, SDL_MapRGB(ecran->format, 255, 255, 0),0, SDL_ALPHA_OPAQUE);
                tempsPrecedent = tempsActuel; // On met à jour le tempsPrecedent
            }
     
            position.x = 180;
            position.y = 210;
            SDL_BlitSurface(texte, NULL, ecran, &position); // Blit du texte contenant le temps
            SDL_Flip(ecran);
     
        }
     
        sge_TTF_CloseFont(font);
     
        TTF_CloseFont(police);
        TTF_Quit();
     
        SDL_FreeSurface(texte);
        SDL_Quit();
     
     
        return EXIT_SUCCESS;
    }
    Ce bout de code est simplement un compteur, j'ai modifié plusieurs éléments ainsi l'interface n'est pas très jolie, je voulais tester l'écriture avec sge_tt_textout et TT_RenderText_shaded.
    En espérant avoir un peu d'aide, merci.
    Bonne soirée.

  5. #5
    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
    Je connais pas la lib , mais je pense que le problème vient du link

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bah j'ai bien ajouté la librairie sous code::blocks dans "building options" et après linker... mais çà me met toujours la même erreur. Ouai je trouve pas beaucoup d'infos sur cette librairie malheureusement.

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    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 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Chez moi (Linux - Ubuntu 10.04 64bits), ça compile. J'ai bien lié les bibliothèques et tout (SDL / SGE / SDL_ttf).
    (Par contre, le programme tel quel fait une erreur de segmentation )
    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. Problème avec la SDL
    Par mjfcolas dans le forum SDL
    Réponses: 10
    Dernier message: 24/06/2007, 19h17
  2. Réponses: 10
    Dernier message: 03/03/2007, 13h46
  3. Problème avec la sdl sur devc++
    Par cuicuicui dans le forum SDL
    Réponses: 3
    Dernier message: 07/08/2006, 13h04
  4. Problème avec librairie iostream.h
    Par Rafoo dans le forum MFC
    Réponses: 3
    Dernier message: 22/07/2005, 13h20
  5. probléme avec la sdl et c++
    Par wikers dans le forum OpenGL
    Réponses: 1
    Dernier message: 10/11/2004, 19h02

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