Bonjour,

J'essaie de développer un driver FUSE sous Linux. Comme le fournisseur de données est développé en Java, j'essaie de faire le lien entre Java et C via JNI.
Afin d'éviter les problèmes, j'ai fais une première implémentation bidon du driver FUSE entièrement en C et cette implémentation arrive bien à invoquer des fonctions de la libfuse.
J'ai ensuite fais un appel JNI à un programme C (bidon aussi). Comme JNI invoque des méthodes présentes dans des libs, j'ai compilé le programme en question sous forme de lib dynamique (appellons là libmyfs.so) que j'ai chargé depuis le programme Java, et là encore, ça fonctionne.

Là où ça se gâte c'est quand j'essaye de faire fonctionner JNI et FUSE. Je modifie le source de libmyfs pour qu'elle appelle la libfuse. Ca compile sans problème mais à l'exécution j'ai l'erreur suivante:

Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/lib/i386-linux-gnu/libmyfs.so: /usr/lib/i386-linux-gnu/libmyfs.so: undefined symbol: fuse_main_real

Cette fonction fuse_main_real() est dans la libfuse mais il ne semble pas la trouver (ou alors pas la chercher dans la bonne lib). Je ne sais pas si le problème vient de JNI ou de la façon dont j'ai compilé ma lib libmyfs, donc je cherche des deux cotés pour le moment.

J'ai chargé les 2 libs au démarrage du programme via

System.load("/usr/lib/i386-linux-gnu/libfuse.so");
System.loadLibrary("myfs");

J'avais commencé en chargeant la libfuse en utilisant System.loadLibrary() mais comme ça ne fonctionnait pas et que je voulais être sûr qu'il trouvait bien la lib j'ai utilisé System.load() et le chemin complet.
Est-ce qu'il y a quelque chose à faire (coté C ou coté Java) dans le cas où la librairie qu'on invoque à une dépendance vers une autre lib?

Merci d'avance pour votre aide éventuelle.