Bonjour,
J'ai réalisé une librairie dynamique sous Linux (.so) à partir de GCC. Celle-ci contient pour le moment deux fonctions :
Avec le Makefile suivant pour cette librairie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 char * matching(const char *, const char *); int match(const char *, const char *);
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 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
Cela me donne l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7hd_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
Ma question est donc : comment appeler les fonctions d'une librairie C (compilée avec GCC) à partir d'une classe C++ ?
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
Merci bien !
Partager