Problème de compilation avec dev-c++ !!!

Résolu/Fermé
Signaler
Messages postés
8
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
22 mars 2009
-
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
-
Bonjour,
Je suis débutants en progammation... et à la suite d'un essai de compilation, je trouve que mon fichier a quelques erreurs...
Voici en détail :
Ca, c'est mon fichier main.c =
/*
** main.c
**
** Fichier principal.
**
** Rôle:
** - initialisation et libération des bibliothèques.
** - fonction main()
*/

#include "main.h"
 
int main(int argc, char **argv)
{
  return 0;
}

/*
** Initialisation du programme
*/
int Init()
{
    SDL_Surface *screen; /* screen pointera vers la surface représentant la fenêtre de l'application */
 
    /* Appel de Free lors de la fermeture du programme */
    atexit(Free);
 
    /* Initialisation de SDL */
    if(SDL_Init(SDL_INIT_VIDEO)==-1)
    {
       perror("Impossible d'initialiser SDL.\n");
       return 1;
    }
 
    /* Initialisation de la fenêtre */
    screen = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE|SDL_DOUBLEBUF);
    if(screen==NULL)
    {
       perror("Erreur lors de la création de la fenêtre.\n");
       return 1;
    }
 
    /* Change le titre de la fenêtre et de l'icône */
    SDL_WM_SetCaption("The Life","RPG 2d");
 
    /* Initialisation de FMOD */
    if (FSOUND_GetVersion() < FMOD_VERSION)
    {
        fprintf(stderr, "Mauvaise version de la bibliothèque. Vous devriez utiliser la version %.02f\n", FMOD_VERSION);
        exit(1);
    }
 
    /*
        INITIALIZE
    */
    if (!FSOUND_Init(32000, 64, 0))
    {
        fprintf(stderr,"Erreur à l'initialisation de FMOD: %s\n", FMOD_ErrorString(FSOUND_GetError()));
        exit(1);
    }
 
    return 0;
}

/*
** Libération du programme
*/
void Free()
{
    SDL_Quit();
}


Et ça, c'est mon main.h =
/*
** main.c
**
** Fichier principal.
**
** Rôle:
** - fonction main()
** - initialisation des bibliothèques
*/
 
#ifndef MAIN_H
#define MAIN_H
 
#include <SDL/sdl.h>
 
#include <FMOD/fmod.h>
#include <FMOD/fmod_errors.h>
 
#include <stdio.h>
#include <stdlib.h>
 
#endif /* !MAIN_H */


Et après une tentative de compilation, voici mes erreurs :
Compilateur: Default compiler
Building Makefile: "C:\Documents and Settings\Kevin.SPECHT.000\Bureau\Projet THE LIFE C\Makefile.win"
Exécution de  make clean
rm -f main.o  "THE LIFE.exe"

gcc.exe -c main.c -o main.o -I"C:/Dev-Cpp/include"   

main.c: In function `Init':
main.c:26: error: `Free' undeclared (first use in this function)
main.c:26: error: (Each undeclared identifier is reported only once
main.c:26: error: for each function it appears in.)

make.exe: *** [main.o] Error 1

Exécution terminée


Merci d'avance

KevinIllusion

4 réponses

Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 797
Salut,
main.c:26: error: `Free' undeclared (first use in this function)
Ce qui doit pointer vers : atexit(Free);
Et en effet Free n'est pas déclaré. D'où le problème.
Ne serait-ce pas plutôt : atexit(SDL_Quit); ?
Messages postés
8
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
22 mars 2009

Merci pour ta réponse...j'ai remplacé
atexit(Free);


Par
atexit(SDL_Quit);


J'ai supprimé :
void Free()
{
    SDL_Quit();
}

qui déclarait Free !!!

Et ça marche mieux !!! Il me reste plus que 1 erreur...
Compilateur: Default compiler
Building Makefile: "C:\Documents and Settings\Kevin.SPECHT.000\Bureau\Projet THE LIFE C\Makefile.win"
Exécution de  make...
make.exe -f "C:\Documents and Settings\Kevin.SPECHT.000\Bureau\Projet THE LIFE C\Makefile.win" all
gcc.exe -c main.c -o main.o -I"C:/Dev-Cpp/include"   

main.c: In function `Init':
main.c:61: error: syntax error at end of input

make.exe: *** [main.o] Error 1

Exécution terminée


Et l'erreur se trouve dans le :
return 0;
à la fin du main.c !!!

J'essaye de chercher de quoi provient cette erreur, mais je ne vois franchement pas !!!
Est-ce que quelqu'un pourrait m'aider ??? SVP

Merci d'avance
Messages postés
8
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
22 mars 2009

Je crois avoir finalement trouver !!! Il me semble que j'ai oublié de mettre une accolade après le
return 0;

J'ai essayé de le compiler, ça marche mais le logiciel ne reste que quelques instants en marche...faudrait-il changer le type : Vu que j'utilise de la SDL, faudrait-il que je me mette en Win32 GUI ???...
Merci d'avance
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 797
Non pas besoin de te mettre en Win32. Je dirais plutôt qu'il faudrait que tu appelles ta fonction Init().
Car là, le programme rentre dans le main, et il quitte aussitôt avec ton return 0.
Effectue aussi après l'appel à Init() dans ton main, une fonction d'attente pour éviter que le programme quitte juste après. Par exemple un petit getchar() ou mieux une fonction d'attenteTouche en SDL.