IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Problème programmation modulaire


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Par défaut Problème programmation modulaire
    Bonjour;
    Je travaille actuellement sur un projet, mais me voici coincer depuis plus de 2 jours sur un stupide problème; J'ai 3 fichier (le main.c, test.h et test.c que voici ci dessous)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //main.c
    #include <stdio.h>
    #include <stdlib.h>
    #include "test.h"
     
    int main()
    {
        affiche();
        return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //test.c
    #include "test.h"
     
    void affiche()
    {
        printf("Hello world");
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //test.h
    #ifndef TEST_H_INCLUDED
    #define TEST_H_INCLUDED
     
        #include <stdio.h>
        #include <stdlib.h>
        void affiche();
     
    #endif // TEST_H_INCLUDED
    Tout devrais fonctionner mais voila, a la compilation j'ai le droit a une belle erreur dans le main:
    Undefined reference to affiche()

    Je travaille sous code::blocks et le fichier est bien linké au projet et les case Debug et release sont cocher.
    Merci d'avance

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Normalement, tu as tout ce qu'il faut.
    (et meme trop, les includes ne servent que dans test.c, il ne devrait pas être dans main.c et test.h)

    "undefined reference" c'est que le linker n'a pas fait le lien qu'il faut.
    La cause probable, c'est qu'un .c n'a pas été compilé.

    Fais un clean, puis un build, et regarde si main.c et test.c sont compilé, puis si tu vois une ligne du genre:
    gcc -o test.exe ... main.o test.o ...Normalement, l'erreur devrait arriver après.


    Si tu travailles sous linux, fais le test à la main (apprendre à compiler de la sorte est utile, de toute facon).

    supposons que tu aies un dossier contenant les trois fichiers.
    alors, tu pourrais compiler ainsi:
    1. d'un coup: gcc *.c -o exemple ce qui produira le programme "exemple"
    2. En plusieurs étapes
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      gcc -c main.c
      gcc -c test.c
      gcc main.o test.o -o exemple

    l'option -o permet de nommer le fichier produit.
    gcc *.c produirait un programme nommé a.out

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Par défaut
    Merci leternel de ta réponse;

    Je travail actuellement, (malheureusement), sous Windows mais je pense que je vais essayer sous Linux.
    Lorsque je recompile après le Clean, c'est au moment de la ligne du linkage du .exe que sa plante et tout les fichiers sont bien compiler.
    Je suis vraiment désespéré sa fait 2 jours que je cherche et toujours rien :/
    J'essaye sous linux et je te tient au courant dans les plus bref délais.

    Bon, sous Linux aucun soucis, tout marche a merveille... (Ne pas pensser du mal de Windows )

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    ça veut dire que c'est bien le réglage de code::blocks qu'il faut remettre en doute.

    Essaie de voir si tous les fichiers sont bien considérés comme des sources.
    En ultime recours, crée un autre projet, dans lequel tu injecteras ces trois fichiers.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Par défaut
    J'ai injecter les fichiers dans un nouveau projet, toujours le même soucis.
    Comment fait-on pour vérifier que les fichiers sont bien considéré comme sources ?

    EDIT: Si je met: #include "test.c" dans le main le programme fonctionne, mais ceci n’étant pas un bonne méthode de programmation, j'aimerais m'en passer.

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Sous Windows, peux-tu nous faire une capture d'écran de l'arborescence du projet, comme dans l'image suivante ?

    Nom : Untitled.png
Affichages : 447
Taille : 6,5 Ko

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/02/2010, 12h49
  2. Problème debugger en programmation modulaire
    Par Henri dans le forum Code::Blocks
    Réponses: 0
    Dernier message: 04/12/2007, 11h56
  3. programmation modulaire
    Par barbarello dans le forum C++
    Réponses: 2
    Dernier message: 19/02/2006, 13h04
  4. [Projet] Programmation modulaire d'un projet.
    Par loverdose dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 18/11/2005, 21h59
  5. Problème programmation objet
    Par Contrec dans le forum MFC
    Réponses: 54
    Dernier message: 30/03/2005, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo