Undefined référence to "fonction" [Résolu]

bizonwarrior 3 Messages postés mardi 8 mai 2012Date d'inscription 17 août 2012 Dernière intervention - 16 août 2012 à 18:49 - Dernière réponse : bizonwarrior 3 Messages postés mardi 8 mai 2012Date d'inscription 17 août 2012 Dernière intervention
- 17 août 2012 à 14:01
Help me !!!
ça fais maintenant plusieurs jours que je bloque sur cette erreur.
je suis débutant en C/SDL et je ne trouve pas mon erreur

voici mon main où j'appelle ma fonction jouer :
#include <stdlib.h>
#include <stdio.h>
#include <SDL.h>
#include <SDL_image.h>

#include "constante.h"
#include "jeu.h"


void pause();

int main(int argc, char *argv[])
{
    SDL_Surface *ecran NULL, *menu NULL;
    SDL_Rect positionMenu;
    SDL_Event event;

    int continuer = 1;

    SDL_Init(SDL_INIT_VIDEO);

    SDL_WM_SetIcon(SDL_LoadBMP("avant1.bmp"), NULL); // L'icône doit être chargée avant SDL_SetVideoMode
    ecran = SDL_SetVideoMode(LARGEUR_FENETRE, HAUTEUR_FENETRE, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
    SDL_WM_SetCaption("The Adventure of ceanoth", NULL);

    menu = SDL_LoadBMP("menu.bmp");
    positionMenu.x = 0;
    positionMenu.y = 0;

    while (continuer)
    {
        SDL_WaitEvent(&event);
        switch(event.type)
        {
            case SDL_QUIT:
                continuer = 0;
                break;
            case SDL_KEYDOWN:
                switch(event.key.keysym.sym)
                {
                    case SDLK_ESCAPE: // Veut arrêter le jeu
                        continuer = 0;
                        break;
                    case SDLK_KP1: // Demande à jouer
                        jouer(ecran);
                        break;
                }
                break;
        }

        // Effacement de l'écran
        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
        SDL_BlitSurface(menu, NULL, ecran, &positionMenu);
        SDL_Flip(ecran);
    }

    SDL_FreeSurface(menu);
    SDL_Quit();

    return EXIT_SUCCESS;
}



void pause()
{
    int continuer = 1;
    SDL_Event event;

    while (continuer)
    {
        SDL_WaitEvent(&event);
        switch(event.type)
        {
            case SDL_QUIT:
                continuer = 0;
        }
    }
}




Ma fonction jouer :
#include <stdlib.h>
#include <stdio.h>
#include <SDL.h>
#include <SDL_image.h>

#include "constante.h"
#include "jeu.h"


void jouer(SDL_Surface *ecran)
{
    SDL_Surface *ceanoth[16] = {NULL}; // 4 surface pour 4 directions
    SDL_Surface *ceanothactuel = NULL;
    SDL_Rect positionceanoth;
    SDL_Event event;

    int continuer 1, i 0, j = 0;
    int carte[NB_BLOCS_LARGEUR][NB_BLOCS_HAUTEUR] = {0};

    // Chargement des sprites (personnage)
    ceanoth[avant1] = SDL_LoadBMP("avant1.bmp");
//    ceanoth[avant2] = SDL_LoadBMP("avant2.bmp");
//    ceanoth[avant3] = SDL_LoadBMP("avant3.bmp");
//    ceanoth[avant4] = SDL_LoadBMP("avant4.bmp");
    ceanoth[arriere1] = SDL_LoadBMP("arriere1.bmp");
//    ceanoth[arriere2] = SDL_LoadBMP("arriere2.bmp");
//    ceanoth[arriere3] = SDL_LoadBMP("arriere3.bmp");
//    ceanoth[arriere4] = SDL_LoadBMP("arriere4.bmp");
    ceanoth[gauche1] = SDL_LoadBMP("gauche1.bmp");
//    ceanoth[gauche2] = SDL_LoadBMP("gauche2.bmp");
//    ceanoth[gauche3] = SDL_LoadBMP("gauche3.bmp");
//    ceanoth[gauche4] = SDL_LoadBMP("gauche4.bmp");
    ceanoth[droite1] = SDL_LoadBMP("droite1.bmp");
//    ceanoth[droite2] = SDL_LoadBMP("droite2.bmp");
//    ceanoth[droite3] = SDL_LoadBMP("droite3.bmp");
//    ceanoth[droite4] = SDL_LoadBMP("droite4.bmp");

    ceanothactuel = ceanoth[arriere1]; // ceanoth sera dirigé vers le bas au départ

     // Recherche de la position de Mario au départ
    for (i = 0 ; i < NB_BLOCS_LARGEUR ; i++)
    {
        for (j = 0 ; j < NB_BLOCS_HAUTEUR ; j++)
        {
            if (carte[i][j] == ceanoth) // Si Mario se trouve à cette position sur la carte
            {
                positionceanoth.x = i;
                positionceanoth.y = j;
                carte[i][j] = VIDE;
            }
        }
    }

    // Activation de la répétition des touches
    SDL_EnableKeyRepeat(100, 100);

     while (continuer)
    {
        SDL_WaitEvent(&event);
        switch(event.type)
        {
            case SDL_QUIT:
                continuer = 0;
                break;
            case SDL_KEYDOWN:
                switch(event.key.keysym.sym)
                {
                    case SDLK_ESCAPE:
                        continuer = 0;
                        break;
                    case SDLK_UP:
                        ceanothactuel = ceanoth[avant1];
                        positionceanoth.y--;
                        break;
                    case SDLK_DOWN:
                        ceanothactuel = ceanoth[arriere1];
                        positionceanoth.y++;
                        break;
                    case SDLK_RIGHT:
                        ceanothactuel = ceanoth[droite1];
                        positionceanoth.x++;
                        break;
                    case SDLK_LEFT:
                        ceanothactuel = ceanoth[gauche1];
                        positionceanoth.x--;
                        break;
                }
                break;
        }

    // Désactivation de la répétition des touches (remise à 0)
    SDL_EnableKeyRepeat(0, 0);

    // Libération des surfaces chargées
    for (i = 0 ; i < 16 ; i++)
        SDL_FreeSurface(ceanoth[i]);
    }
}



Et lorsque je compile code:block me met un undefined refence to 'jouer(SDL_surface *)'

Je précise, je suis débutant et mon code n'est pas fini des aides, conseilles et autres sont les bienvenus
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
bizonwarrior 3 Messages postés mardi 8 mai 2012Date d'inscription 17 août 2012 Dernière intervention - 17 août 2012 à 14:01
3
Merci
j'ai fais voir mon code à un ami et on à pu constater que mon 'main' n'étais pas "main.c" mais "main.cpp" donc en recréant correctement le 'main' tout va bien. Par contre aucune idée de pourquoi l'extension n'étais pas bonne.
Merci beaucoup e"n tout cas, j'aurais peut être encore besoin de vous d'ici la fin de mon projet =P
A plus

Merci bizonwarrior 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de bizonwarrior
cptpingu 3809 Messages postés dimanche 12 décembre 2004Date d'inscription 25 septembre 2018 Dernière intervention - 17 août 2012 à 01:26
0
Merci
Bonjour.

C'est une erreur de compilation ou de link ?

Si c'est une erreur de compilation, vérifie que la fonction "jouer" ait bien la même signature dans le header et le fichier de code (et qu'il soit bien présent dans
le header). Tu peux aussi vérifier que la garde de ton header ne soit pas mal conçue (ça arrive sur une faute de frappe).
Enfin, vérifie que le fichier "jeu.h" soit bien trouvé par ton fichier "main.c".

Si c'est une erreur de link, vérifie que le fichier "jeu.c" soit bien dans la ligne de compilation (si tu ne compiles que le "main.c", c'est sur que ça fonctionnera tout de suite moins bien :p)

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Commenter la réponse de cptpingu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.