Le samedi 25 mars, Patrick Dupre a écrit :
> Est-ce que je peux appeler une subroutine C++ depuis un programme c ?
Apparemment oui. Je viens de faire un test sur un exemple trivial :
===== a.cc =====
int square(int i)
{
return i*i;
}
================
===== b.c =====
#include <stdio.h>
int _Z6squarei(int i);
int main(void)
{
printf("%d^2 = %d\n", 5, _Z6squarei(5));
return 0;
}
===============
===== test =====
$ g++ -c -Wall -Wextra a.cc -o a.o
$ gcc -c -Wall -Wextra b.c -o b.o
$ gcc a.o b.o
$ ./a.out
5^2 = 25
================
Ici, la seule difficulté est de retrouver le « vrai » nom de la fonction
écrite en C++. Tu peux utiliser pour cela la commande nm qui liste la
table des symboles d'un objet :
$ nm a.o
00000000 T _Z6squarei
Si la fonction que tu cherches est dans un bibliothèque dynamique, c'est
« nm -D ». C.f. man nm.
Ciao,
Edgar.