Bonjour,

J'ai réalisé une librairie dynamique sous Linux (.so) à partir de GCC. Celle-ci contient pour le moment deux fonctions :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
char * matching(const char *, const char *);
int match(const char *, const char *);
Avec le Makefile suivant pour cette librairie :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !