Bonsoir.
Je me prends la tête sur un truc tout simple depuis 3 jours : je voudrais faire une bibliothèque .so et m'en servir.
J'ai ce Makefile :
Et j'ai ces 3 fichiers :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 lib: biblio.cc biblio.h g++ -fPIC -c biblio.cc $(CXXFLAGS) g++ -shared -o libtest.so biblio.o rm *.o main: lib main.cc g++ -c $(CXXFLAGS) main.cc g++ -L. -ltest -o main main.o rm *.o
biblio.h
biblio.cc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #ifndef _TEST_H_ #define _TEST_H_ class Test { public: void test(); }; #endif
main.cc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #include "biblio.h" #include <stdio.h> void Test::test() { printf("bouh\n"); }
Quand je fais make lib tout va bien mais le make main me renvoie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #include "biblio.h" int main() { Test *t=new Test(); t->test(); delete t; }
J'ai tenté 50 versions différentes de compilation, aucune ne passe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 g++ -c -Wall main.cc g++ -L. -ltest -o main main.o main.o: In function main: main.cc:(.text+0x1e): undefined reference to Test::test() collect2: error: ld returned 1 exit status make: *** [main] Erreur 1
Si quelqu'un pouvait m'aider... Merci d'avance !
@+
Rémi
Partager