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:
en repondant par:
Code : Sélectionner tout - Visualiser dans une fenêtre à part g++ my.o -c use.cpp -o my
ou à celui de la commande make dont voici la reponse:
Code : Sélectionner tout - Visualiser dans une fenêtre à part g++: my.o: linker input file unused because linking not done
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
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
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!
Partager