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 :
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
Et j'ai ces 3 fichiers :
biblio.h
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
biblio.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");
}
main.cc
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;
}
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
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
J'ai tenté 50 versions différentes de compilation, aucune ne passe.

Si quelqu'un pouvait m'aider... Merci d'avance !

@+
Rémi