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

GCC Discussion :

[cygwin]problème d'éditeur de lien avec le modificateur externe en c++


Sujet :

GCC

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Points : 7
    Points
    7
    Par défaut [cygwin]problème d'éditeur de lien avec le modificateur externe en c++
    Bonjour,
    Au cours de la compilation séparée d'un petit projet comprenant les fichiers:
    my.h, my.cpp, use.cpp et dont les codes sont les suivants, est survenu un problème d'édition de lien.
    my.h:
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    extern int foo;
    void print_foo();
    void print(int);

    my.cpp:
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <iostream>
    #include "my.h"
    using namespace std;
     
    void print_foo()
    {
       cout << "valeur de foo = " << foo << endl; 
    }
    void print(int i)
    {
       cout << "valeur de i = " << i << endl;
    }

    use.cpp
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include "my.h"
     
    int main()
    {
       int foo = 7;
       print_foo();
       print(99);
    }

    Mon editeur de lien refuse de produire l'exécutable my, suite au lancement de ma ligne de commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g++ my.o -c use.cpp -o my
    en repondant par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g++: my.o: linker input file unused because linking not done
    ou à celui de la commande make dont voici la reponse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    /tmp/cctPr4fI.o: my.cpp: (.text+0xba): undefined reference to '_foo'
    collect 2: Id returned 1 exit status
    make: *** [my] Error 1
    Pour moi l'élément déclencheur de l'erreur est le mot-clé "extern" dans mon fichier-entête. D'après mes analyses, j'en suis arrivé à la conclusion que
    que dans mon installation de cygwin il manquerait probablement les paquets dont a besoin l'éditeur de lien pour utiliser ce mot-clé et que j'ai certainement omis dans mon téléchargement.
    Mais alors, je connais pas les noms de ces paquets, même malgré mes multiples tentatives sur le web.
    J'ai vraiment besoin d'aide. Merci d'avance!

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    En fait, j'avais cherché trop loin. Il fallait simplement plutôt définir la variable "foo" de use.cpp, globale.

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

Discussions similaires

  1. Problème à l'édition des liens avec wxPlotCtrl
    Par _MattU_ dans le forum wxWidgets
    Réponses: 2
    Dernier message: 12/03/2009, 08h40
  2. problèmes requête sql, dont lien avec la valeur d'un textbox
    Par Drone dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 12/02/2009, 17h28
  3. Problème à l'édition des liens avec BCC55 et Xerces
    Par ShootDX dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 30/11/2003, 14h50

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