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

Résolu/Fermé
KevinIllusion Messages postés 8 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 22 mars 2009 - 21 mars 2009 à 21:26
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 22 mars 2009 à 11:15
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
A voir également:

4 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
22 mars 2009 à 01:47
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); ?
0
KevinIllusion Messages postés 8 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 22 mars 2009
22 mars 2009 à 10:01
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
0
KevinIllusion Messages postés 8 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 22 mars 2009
22 mars 2009 à 10:07
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
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
22 mars 2009 à 11:15
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.
0