Edition de liens et librairie dynamique
Bonjour,
J'ai réalisé une librairie dynamique sous Linux (.so) à partir de GCC. Celle-ci contient pour le moment deux fonctions :
Code:
1 2
| char * matching(const char *, const char *);
int match(const char *, const char *); |
Avec le Makefile suivant pour cette librairie :
Code:
1 2 3 4 5
| libkregexp.so.1.0 : kregexp.o
gcc -fPIC kregexp.o -shared -W1,-soname,libkregexp.so.1 -o libkregexp.so.1.0
kregexp.o : kregexp.h kregexp.c
gcc -fPIC -c kregexp.c |
Ensuite, j'ai un second programme, écrit en C++. Une de mes classes a besoin d'appeler la fonction matching de la librairie. La compilation du code C++ fonctionne mais l'édition des liens non :
Code:
1 2 3 4 5 6 7
| hd_quota : main.o hd_quota.o
g++ main.o hd_quota.o -o hd_quota -L. libkregexp.so.1.0
main.o : main.cpp hd_quota.h
g++ -Wall -c main.cpp
hd_quota.o : hd_quota.h hd_quota.cpp kregexp.h
g++ -Wall -c hd_quota.cpp |
Cela me donne l'erreur suivante :
Code:
1 2 3 4 5
| g++ main.o hd_quota.o -o hd_quota -L. libkregexp.so.1.0
main.o(.text+0x1bb): In function `main':
: undefined reference to `matching(char const*, char const*)'
collect2: ld a retourné 1 code d'état d'exécution
make: *** [hd_quota] Erreur 1 |
Ma question est donc : comment appeler les fonctions d'une librairie C (compilée avec GCC) à partir d'une classe C++ ?
Merci bien !