Partage
  • Partager sur Facebook
  • Partager sur Twitter

erreur : multiple definition of 'initialisation'

puis first define here

    27 mai 2006 à 14:48:56

    Bonjour à tous , un petit problème depuis que j'ai pris la sage décision de diviser mon programme avec la programmation modulaire, aucune erreur de compil à part ces deux là lorsque le jeu se lance :

    .objs\affichage.o:affichage.c:(.text+0x0): multiple definition of `initialisation'
    .objs\main.o:main.c:(.text+0x0): first defined here
    collect2: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 0 seconds)


    Après quelques recherches sur google, j'ai trouvé quelques informations mais qui m'ont pas franchemet aidé. Un: ca pouurait venir des oublis de ifndef, def dans les fichiers .h, mais je les ai mis. Ou alors qu'il y a plusieurs fichiers initialisation dans mon projet, négatif... Je crois cerner un peu près l'erreur , mais il me me manque le petit "tilt" pour trouver d'où ca vient...Je viens donc quérir votre aide :

    main.c(en partie)

    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL_ttf.h>
    #include "constantes.h"
    #include "affichage.c"

    int main (int argc, char *argv[])
    {
    // VARIABLES DIVERSES
    SDL_Surface* fenetre = NULL;
    SDL_Event event;
    int continuer = 1;
    long millisecondes = 0, secondes = 0, minutes = 2;
    long i = 0, j = 0;
    srand(time(NULL));
    enum {HAUT, BAS, GAUCHE, DROITE };
    long minX = 0, maxX = 0, minY = 0, maxY = 0;
    long sensBalleX[5] = {DROITE,DROITE,DROITE,GAUCHE,DROITE};
    long sensBalleY[5] = {HAUT,BAS,BAS,HAUT,HAUT};
    long points = 0;
    long vitesseBalles = 2;
    long vitesseHeros = 3;
    // FONCTION INITIALISATION
    initialisation(fenetre);
    //etccccccccccccc

    affichage.c
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL_ttf.h>
    #include "affichage.h"


    void initialisation(SDL_Surface *fenetre)
    {
        SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER);
        TTF_Init();
        fenetre = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
        SDL_WM_SetCaption("Shoot Them All !", NULL);
    }

    affichage.h
    #ifndef AFFICHAGE
    #define AFFICHAGE

    void initialisation(SDL_Surface *fenetre);

    #endif

    et finalement constantes.h
    #ifndef CONSTANTES
    #define CONSTANTES

    #define LARGEUR_TERRAIN 340
    #define HAUTEUR_TERRAIN 340
    #define NMB_BALLES 3
    #define LARGEUR_BALLE 30
    #define HAUTEUR_BALLE 30
    #define LARGEUR_HEROS 34
    #define HAUTEUR_HEROS 34

    #endif
    • Partager sur Facebook
    • Partager sur Twitter
      27 mai 2006 à 14:54:46

      Citation : N1gHtm@r3

      Bonjour à tous , un petit problème depuis que j'ai pris la sage décision de diviser mon programme avec la programmation modulaire,

      main.c(en partie)

      #include "affichage.c"

      Force 8 Pas mal !

      Relis le cours de M@teo sur la programmation modulaire parce qu'il n'a jamais été question d'inclure un .c dans un .c.

      • Partager sur Facebook
      • Partager sur Twitter
      Music only !
        27 mai 2006 à 14:57:58

        :lol: *Ris jaune*

        Merci bien -ed- ;)

        EDIT : crénom ! Maintenant j'ai un parachute dans les bras :(

        J'aurais dû tout code dans le main , je ne serais que force 6 au moins :lol:

        Par hasard, quelqu'un ne sait pas si qui fait tout foire dans cette fonction (de 4 lignes :-° )... Au pif je dirais que mon SetVideoMode n'est pas tenu en compte mais je ne vois pas comment changer ca en le laissant dans la fonction...
        • Partager sur Facebook
        • Partager sur Twitter

        erreur : multiple definition of 'initialisation'

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown