Intereting Posts

NDK-link библиотека в другую библиотеку «Невозможно загрузить библиотеку: link_image : 1765 не удалось загрузить нужную библиотеку …»

Прежде всего, я хочу сказать вам, что я хочу делать. У меня есть .h-файл и .c-файл с обычным C-кодом, в котором я создал общую библиотеку с Android NDK. Итак, теперь у меня есть .so-файл, который называется libtry.so. Кроме того, я хочу использовать собственный код в своем проекте Android Eclipse. Поэтому я создал .java-файл с классом «Counter» и содержимым

public native static int Number(int n); 

а также

 static { System.loadLibrary("test"); } 

Затем я создаю файл C-заголовка из .java-файла с помощью инструмента javah.

Впоследствии я создаю C-исходный файл для C-Headerfile, в котором я реализую собственный код.

Затем я создаю общую библиотеку с этими двумя файлами с LOCAL_MODULE := test , так что файл будет называться libtest.so . Но дело в том, что я хочу связать общую библиотеку libtry.so, которую я создал в начале, в эту общую библиотеку.

Итак, в Android.mk-файле libtest.so я помещаю LOCAL_LDLIBS := -L/root/Android/Samples/Test/libs/ -ltry .

На самом деле это работает, потому что я могу скомпилировать этот Android.mk-файл с помощью ndk-build.

Но теперь в моем проекте Eclipse, если я хочу использовать библиотеку libtest.so, это не сработает. Я имею в виду, если я создам объект класса «Counter», в который загружается библиотека libtest.so,

Я получаю сообщение об error: "Cannot load library: link_image[1966]: 1752 could not load needed library 'libtry.so' for 'libtest.so'" .

Что я делаю не так? Заранее спасибо.

Вы связываете библиотеку с библиотекой. В коде Java они должны быть загружены явно в обратном порядке, например

 static { System.loadLibrary("dependencylib"); // try System.loadLibrary("mainlib"); // test } 

Ответ отсюда