java.lang.UnsatisfiedLinkError: сбой dlopen: библиотека «libXXXXX.so.0» не найдена - PullRequest
0 голосов
/ 27 июня 2018

Я создал libXXXXX.so из сторонних источников в моей среде кросс-компиляции Android. Сборка прошла успешно, но при выполнении возникла следующая ошибка.

Журнал ошибок (logcat)

java.lang.UnsatisfiedLinkError: dlopen failed: library "libXXXXX.so.0" not found

Я думаю, что so.0 что-то не так, но я не знаю, как справиться с этим в Android Studio.

Результат readelf:

$readelf -d libXXXXX.so | grep SONAME<br>
0x000000000000000e (SONAME) Library soname: [libXXXXX.so.0]

CMakeLists.txt так:

add_library( libXXXXX SHARED IMPORTED )

set_target_properties( libXXXXX PROPERTIES
IMPORTED_LOCATION ${LIB_ROOT}/cpp/libs/${ANDROID_ABI}/libXXXXX.so )

add_library(hello-jni SHARED src/main/cpp/hello-jni.cpp )

target_link_libraries( hello-jni libXXXXX ${log-lib} )

Исходный код Java:

static {
    System.loadLibrary("hello-jni");
}
  • В случае libXXXXX.a (СТАТИЧЕСКАЯ БИБЛИОТЕКА) был успешно выполнен.
  • libXXXXX.so.0 помещается в ту же папку, что и libXXXXX.so.

Как насчет присоединения параметров, связанных с SONAME, к CMakeLists.txt? Я стараюсь, но не очень хорошо понимаю.

Может ли кто-нибудь предложить какие-либо решения?

Изменение статуса.

Я добавляю libXXXXX.so как loadLibrary в коде Java.

static {
    System.loadLibrary("XXXXX");
    System.loadLibrary("hello-jni");
}

Журнал ошибок выглядит следующим образом:

java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "acos" referenced by "...libXXXXX.so"...

Нет функции acos в Android? Любые решения?

Добавлена ​​libm, но остается та же ошибка

CMakeLists.txt:

target_link_libraries( hello-jni libXXXXX m ${log-lib} )

Исходный код Java:

static {
    System.loadLibrary("m");
    System.loadLibrary("XXXXX");
    System.loadLibrary("hello-jni");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...