Система.ошибка loadLibrary ()

я успешно скомпилировал библиотеку c++ с помощью Android ndk-Standalone toolchain затем я создал новый проект приложения для android в Eclipse и когда я положил mylib.поэтому в папку jni и выполнять команды ndk-build он работает нормально

Prebuilt       : mylib.so <= jni/
Install        : mylib.so => libs/armeabi/mylib.so

но при добавлении

static{
  System.load("/data/data/my_package/lib/mylib.so");
}

я получил ошибку в logcat, говоря

   AndroidRuntime
   Caused by: java.lang.UnsatisfiedLinkError: Cannot load library:
   reloc_library[1306]:      36 cannot locate 'xmlCleanupParser'...``

я погуглил, но не нашел способ решить эту проблему.

5 ответов


недавно я столкнулся с той же ошибкой. Опробовав десятки предложений от SO, я, наконец, понял, что ошибка была в моем собственном коде. хотя android ndk скомпилировал его без каких-либо проблем / предупреждений.

попробуйте написать простую основную функцию для тестирования собственного кода и компиляции с помощью g++/gcc (или чего-то подобного) для проверки ошибок.

Я знаю, что слишком поздно для asker, но надеюсь, что кто-то еще найдет это полезный.


люди в основном забыли вырезать" lib " префикс имя библиотеки формы. Поэтому, если у вас есть " libusb.Итак, " ваш код должен быть системным.loadLibrary ("usb")...


Если у вас есть скомпилированная собственная библиотека (.so - file) в вашем lib/-каталог, вы можете обратиться к нему, не используя полный путь:

static{
  System.load("mylib");
}

как показано в учебник.


проверьте, правильно ли вы установили пакет в заголовочном файле:как разрешить java.ленг.UnsatisfiedLinkError в NDK в Android?


try {
       System.load("/data/data/<package name>/lib/libsample-jni.so");
    } catch (UnsatisfiedLinkError e) {
       System.loadLibrary("<sample-jni>"); //remove lib and .so from name
}

это поможет вам, Pls. проверять.


пожалуйста, укажите ваш .поэтому файл вроде как следующий.

 static {

     System.loadLibrary("mylib");

}

надеюсь, это поможет вам.