Aller au menu - Aller au contenu
Inscris-toi au e-camp "Héberge ton jeu Facebook sur Azure" de Microsoft vendredi 25 mai à 13h30 !

" Undefined reference to... "

Problème à la compilation

Pour accéder à cette section
Connectez-vous !
connexion_rpx

Résolu Le problème de ce sujet a été résolu

Page 1 
Auteur Message
1 visiteur sur ce sujet (1 Anonyme)
Page 1 
Hors ligne Tenebrous # Posté le 14/06/2009 à 01:55:31
Avatar

Études : ISAT Charleroi

Bonsoir à tous. :)
Je suis actuellement le tutoriel traitant du langage C et je rencontre un petit problème à la section suivante : Les tableaux.
Je m'explique : A la toute fin de ce chapitre, M@teo21 nous propose 5 exercices pour nous embêter exercer :D . Je commence par le premier et suis ses conseils, c'est-à-dire créer plusieurs fichiers différents. J'ai donc mon "main.c" et je crée également "tableaux.c" et "tableaux.h".
Dans "tableaux.h", j'ai le prototype de ma fonction "sommeTableau", voici le code :

Code : C
1
long sommeTableau(long tableau[], long tailleTableau);


Dans "tableaux.c", j'ai le code de ma fonction "sommeTableau" (notez que je n'ai pas oublié le #include "tableau.h") :

Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#include <stdio.h>
#include <stdlib.h>
#include "tableau.h"

long sommeTableau(long tableau[], long tailleTableau)
{
    long accumulateur = 0, i = 0;
    for (i = 0; i < tailleTableau; i++)
    {
        accumulateur = accumulateur + tableau[i];
    }
    return accumulateur;
}


Et, pour finir, dans "main.c" je fais un appel à ma fonction "sommeTableau" (notez une fois de plus que je n'ai pas oublié le #include "tableaux.h") :

Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#include <stdio.h>
#include <stdlib.h>
#include "tableaux.h"

int main()
{
    long tableau[5] = {5,3,6,8,9}, somme = 0;
    somme = sommeTableau(tableau, 5);
    printf("%ld", somme);
    return 0;
}


Tout me semble correct, je veux compiler et qu'est-ce qu'on me dit #@!?$~ gentillement ? :colere2: In function 'main' :
undefined reference to '_sommeTableau'
J'ai la très nette impression que le problème vient du fait que j'aie séparé mon code en plusieurs fichiers car j'ai essayé de tout mettre dans le "main.c" (en n'utilisant donc plus "tableaux.h" et "tableaux.c") et là j'obtiens le résultat escompté ;)
Voili voilou, j'espère que vous pourrez m'aider à résoudre ce petit problème. :)
Vu l'heure, je pense que je vais opter pour un "Bonne nuit" plutôt que "Bonne soirée" :p

So I said, "This is very obviously a Piero della Francesca."
 
Publicité # Posté le 14/06/2009 à 01:55:31

Connecté Floooder # Posté le 14/06/2009 à 02:13:34

Tu compiles comment? (IDE, ligne de commande?)
Hors ligne Divine-Quest # Posté le 14/06/2009 à 02:45:48
MMORPG : Divine Quest

Salut,

dans ton main.c : tu indiques "tableaux.h" alors que dans ton fichier tableau.c, tu indiques "tableau.h".
Je pense que ton erreur vient de là ^^

Divine Quest :
En train de coder le moteur : Divine Quest Engine (15%)


 
Hors ligne rz0 # Posté le 14/06/2009 à 13:29:27
Papa Ours.
Avatar
Flux RSS

Études : Ensimag

Il faut ajouter tous tes fichiers .c à ton projet, si tu utilises un IDE, ou tous les spécifier sur la ligne de commande si tu compiles en console.

Relis http://www.siteduzero.com/tutoriel-3-13993-la-programmation-modulaire.html#ss_part_3. m@t doit en parler.
 
Hors ligne Tenebrous # Posté le 14/06/2009 à 14:07:39
Avatar

Études : ISAT Charleroi

Merci pour vos réponses.

Floooder ~~~> J'utilise CodeBlocks donc j'appuie bêtement sur F9 pour compiler et exécuter :)

Divine-Quest ~~~> Effectivement, j'avais oublié le "x" hier car j'avais essayé de modifier plein de trucs pour voir si ça ne résolvait pas le problème mais j'avais déjà essayé de compiler avant quand le "x" y était (et je viens encore de ré-essayer après avoir corrigé) mais sans succès :(

rz0 ~~~> Je pense que c'est ok, j'ai lu et relu ce chapitre pour être sûr de n'avoir commis aucune erreur. Voici un screen sous CodeBlocks pour te montrer que tous les fichiers font bien partie du projet :
Ici

So I said, "This is very obviously a Piero della Francesca."
 
Hors ligne rz0 # Posté le 14/06/2009 à 14:26:20
Papa Ours.
Avatar
Flux RSS

Études : Ensimag

Je ne connais pas Code::Blocks mais ptet que F9 ne compile que le fichier actuel... en tout cas, le problème c'est qu'il ne lie pas tous les fichiers entre eux.
 
Hors ligne Tenebrous # Posté le 14/06/2009 à 14:59:17
Avatar

Études : ISAT Charleroi

Problème résolu ! :D
En fait, pour ajouter des fichiers au projet, il fallait procéder de la manière suivante :

- Aller dans l'onglet "Projet" puis dans "Add files..."
- Choisir les fichiers à ajouter ; dans mon cas "tableaux.c" et "tableaux.h"
- Seulement, et c'est de là que venait l'erreur, lorsqu'on ajoute un fichier, Code::Blocks ouvre une fenêtre avec "Debug" et "Release" que l'on peut cocher ou pas. J'ai coché les deux options pour chaque fichier (le .h et le .c) et ça marche. :)

Voilà, en espérant que ça pourra servir à quelqu'un d'autre s'il rencontre le même problème. ;)

So I said, "This is very obviously a Piero della Francesca."
 
Hors ligne JulianKTH # Posté le 04/11/2009 à 17:03:36
Semper Fidelis
Avatar

Merci pour les explications Tenebrous (et ceux qui l'ont aidé!), j'ai rencontré ton problème et effectivement ta procédure le résout.
J'ajouterai que sous CodeBlock, avant de faire F9, tu peux faire Ctrl+F11, ce qui va reconstruire entièrement ton projet.
Puis si tu n'as pas d'erreur, alors faire un F9.
Voilou :)


EDIT: Autre chose, il faut bien vérifier que le fichier 'main' possède bien l'extension voulue: je m'explique, j'ai aussi rencontré l'erreur décrite lors d'un projet SDL en C et le problème venait tout bêtement qu'à la création, CodeBlocks avais créé par défaut un 'main.cpp' (pour du C++) et non 'main.c', et moi en zéro que je suis, ai mis un bon moment à comprendre :euh: ! Donc j'ai créé un 'main.c', copier le code dedans, supprimer le 'main.cpp', ai ajouter le nouveau 'main.c' à mon projet, et miracle (en fait non pure logique), ça tourne impec! :)
Édité le 06/11/2009 à 13:38:47 par JulianKTH

Attend SC2 avec impatience...
 
Hors ligne netenxus # Posté le 28/02/2012 à 12:34:35

Oh.. Merci beaucoup a vous ! Cela fait maintenant pas mal d'heures que je recherche mon problème sur la toile, et grâce a vous je vais pouvoir continuer mon projet, je vous remercie infiniment !

Retour au forum "Langage C" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx