У меня проблема с вызовом функции C с использованием другой функции C из другого файла .c из моего Java JNI (не обращайте внимания на некоторые французские слова в моем коде, спасибо). Код на С работает нормально.
Вот две строки, которые я использую для компиляции моих библиотек. Я собираю свою первую библиотеку с помощью функции, которую я использую во второй библиотеке. Скажите мне, если я делаю это неправильно, чтобы иметь возможность сделать это:
gcc -fPIC -shared -I"$$JAVA_HOME/include" -I"$$JAVA_HOME/include/linux" -o Libraries/libfilemot.so ../IndexationTexte/fileMot.c
gcc -fPIC -shared -I"$$JAVA_HOME/include" -I"$$JAVA_HOME/include/linux" ../IndexationTexte/indexationV1.c -L./Libraries/ -l:libfilemot.so -o Libraries/libindexation.so
В моем классе Java у меня есть это:
public class MoteurDeRecherche {
static {
try {
System.load("/home/aurelien/Documents/Projects/Projet_fil_rouge/noyau_c/JNI/Libraries/libfilemot.so");
System.load("/home/aurelien/Documents/Projects/Projet_fil_rouge/noyau_c/JNI/Libraries/libindexation.so");
}
catch(UnsatisfiedLinkError e) {
System.out.println("Erreur de chargement des librairies :\n" + e);
System.exit(1);
}
}
public static native void indexationTexte();
public static void main(String args[]) {
MoteurDeRecherche.indexationTexte();
}
}
Но я получаю эту ошибку из моей библиотеки, которая успешно компилируется:
Erreur de chargement des librairies :
java.lang.UnsatisfiedLinkError: /home/aurelien/Documents/Projects/Projet_fil_rouge/noyau_c/JNI/Libraries/libindexation.so: libfilemot.so: cannot open shared object file: No such file or directory
Не стесняйтесь, если вам нужна дополнительная информация. Еще раз спасибо.