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 de compilation: Référence indéfinies


Sujet :

C++

  1. #1
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut Problème de compilation: Référence indéfinies
    Bonjour à tous.

    Voilà, je me suis remis au cpp après quelque mois d'inactivité dans ce domaine, et je dois dire que j'ai du mal à m'y remettre comme il faut.

    Mais cela n'est pas vraiment mon problème pour l'instant.

    Mon problème est assez simple, lorsque je souhaite compiler mon applic, il me fait l'erreur suivante:

    cc -DLINUX -c main.cxx
    cc -DLINUX -c ./piecemusee/piecemusee.cxx
    cc -DLINUX -c FichierLog.cxx
    cc -DLINUX -o applic main.o piecemusee.o FichierLog.o
    main.o: dans la fonction « __static_initialization_and_destruction_0(int, int)»:
    main.cxx: (.text+0x23): référence indéfinie vers « std::ios_base::Init::Init()»
    main.o: dans la fonction « __tcf_0 »:
    main.cxx: (.text+0x66): référence indéfinie vers « std::ios_base::Init::~Init()»
    main.o: dans la fonction « MainMenu() »:
    // et ainsi de suite
    Je vais vous montrer la hiérarchie de fichier que j'ai mise en place:

    >main.cxx
    >Ecran.h
    >FichierLog.h .cxx
    >makefile
    >piecemusee>piecemusee.h .cxx

    Je travaille sur un OpenSuse 10.1, j'ai installer les packages gcc et make pour pouvoir compiler et tester mon applic. Dans quelques semaines, je devrais transposer cette applic pour qu'elle tourne sur une machine SUN.

    Je vous montre ici mon makefile:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    CC = cc -DLINUX
     
    all: Main PM LOG
    	$(CC) -o applic main.o piecemusee.o FichierLog.o
     
    Main:
    	$(CC) -c main.cxx
     
    PM:
    	$(CC) -c ./piecemusee/piecemusee.cxx
     
    LOG:
    	$(CC) -c FichierLog.cxx
     
    clean:
    	@rm -f *.o applic core
    Je ne pense pas qu'il y ai d'erreur dans ce dernier, mais sait-on jamais.

    Je vous montre ci-après, les includes et directive de compilation que j'applique à mes fichiers .h et .cxx:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    // pour le main.cxx
    #ifdef VISUAL
    #include <iostream.h>
    #elif BORLAND
    #include<iostream.h>
    #elif DEC
    #include<stream.h>
    #elif SUN
    #include<iostream>
    using namespace std;
    #elif LINUX
    #include<iostream>
    using namespace std;
    #endif
     
    #include<stdio.h>
    #include<stdlib.h>
    #include<ctype.h>
    #include<fstream>
    #include<string.h>
     
    #include"./piecemusee/piecemusee.h"
    #include"./Ecran.h"
    #include"./FichierLog.h"
    SI je comprend bien, il ne veut pas de mon namespace, pourtant, je pense bien avoir signalé celui-ci comme il faut.

    Je ne vois pas d'où pourrait venir l'erreur. Quelqu'un parmi vous pourrait-il donc me porter conseils?

    Merci pour l'aide que vous pourrez m'apporter.

    Je m'excuse pour la longueur du message, mais ceux qui me connaisse, sauront que ces dans mes habitudes de tartiner de beau grand message.
    Ainsi au moins, je suis presque sur de ne rien avoir oublier.

    Merci encore pour l'aide que vous m'apporterez,

    Richard_sraing
    First step: F.A.Q.
    Second step: Forum -> Recherche
    Thrid step: Forum -> Poser une question
    Fourth step: Forum -> Attendre une réponse
    Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

    Simple non ? l'utilisation de developpez.com

  2. #2
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Utilise g++ pour l'edition de liens sinon tu n'as pas les bibliotheques standards.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu compiles bien avec g++ et non gcc ?

    A part ça, iostream.h n'est à utiliser avec aucun compilo, même pas les vieux VC ou BCB (voir FAQ). D'ailleurs aucun en-têtes standard C++ en .h ne l'est.

  4. #4
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    Ben en fait si, j'utilise gcc pour compile mon applic.

    On nous a dit a l'ecole de l'utiliser pour des raisons de portabilité lorsque l'on passe de Linux (peut importe la version) vers une machine Sunray.

    Donc moi je ne sais pas. Déjà comme ça, quand j'ai du transférer mon applic à Noel de mon linux sur la machine SUN, j'ai du changer quelques trucs, qui marchait très bien sous Linux mais qu'il était impossible de faire allez sur la machine SUN.

    Donc je ne sais pas.

    Et vous pensez que si j'utilise g++ à la place de gcc ça passera à la compilation?
    Alors je vais essayer comme ça, mais je ne promet rien

    Richard_sraing
    First step: F.A.Q.
    Second step: Forum -> Recherche
    Thrid step: Forum -> Poser une question
    Fourth step: Forum -> Attendre une réponse
    Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

    Simple non ? l'utilisation de developpez.com

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    gcc --> C
    g++ --> C++

    Mais ne t'inquiète pas, g++ n'est qu'un alias pour gcc + l'option qui va bien pour gérer le C++.

Discussions similaires

  1. Problème de référence indéfinie
    Par Thibaut Marmin dans le forum Eclipse C & C++
    Réponses: 1
    Dernier message: 07/04/2011, 12h26
  2. Problème de compilation : référence non définie
    Par sabrinabest dans le forum C++
    Réponses: 9
    Dernier message: 13/09/2007, 13h29
  3. Problème de référence indéfinie
    Par skyangel dans le forum C++
    Réponses: 1
    Dernier message: 28/03/2007, 16h53
  4. Problème de compilation de la DLL du XMLRad
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/04/2003, 16h46
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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