Rechercher : dans
Par :

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

Dernière réponse le 22 mar 2009 à 11:15:45 KevinIllusion, le 21 mar 2009 à 21:26:15 
 Signaler ce message aux modérateurs

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
Configuration: Windows XP
Firefox 3.0.6

Meilleures réponses pour « problème de compilation avec dev c++ !!! » dans :
La compilation et les modules en C et en C++ VoirCet article a pour vocation d'introduire les notions de bases de la compilation en C et en C++ et de la programmation modulaire. Il permet de mieux comprendre les messages d'erreur du compilateur. Les notions abordées ici sont indépendantes du...
Compiler un programme en C avec Dev C++ sous Vista VoirIl est très probable que vous ayez des problèmes lors de la compilation d'une source C sous Vista avec Dev C++. Solution rapide de secours: le compilateur g++ Voici une astuce pour Dev-Cpp : Aller dans "Outils" -> "Options du compilateur" puis...
Compiler du C sous Linux/UNIX VoirSous Linux, le compilateur de C est gcc. Il est installé de base sur plusieurs distributions, mais sur Debian (et celles qui en découlent) il faudra l'installer (aptitude install gcc). gcc Syntaxe de GCC gcc Tout d'abord, il faut savoir...

1

fiddy, le 22 mar 2009 à 01:47:46

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); ?
Google is your friend

Répondre à fiddy

2

KevinIllusion, le 22 mar 2009 à 10:01:47

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

Répondre à KevinIllusion

3

KevinIllusion, le 22 mar 2009 à 10:07:38

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

Répondre à KevinIllusion

4

 fiddy, le 22 mar 2009 à 11:15:45

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.
Google is your friend

Répondre à fiddy
Collection CommentÇaMarche.net