Не удается загрузить мини-код в Android JNI. не удалось связать libminizip.so

1

У меня возникли проблемы с получением minizip для работы на Android. Сначала я попытался связать его как статическую с моей общей библиотекой приложений. Однако, как только я использовал код из этой библиотеки minizip, я получил UnsatisfiedLinkError. У меня есть несколько других библиотек, которые работают, libzip и libpng. Поэтому для сравнения я скомпилировал все три в разделяемые библиотеки и использовал System.loadLibrary("libpng"); System.loadLibrary( "libzip"); System.loadLibrary( "minizip"); для загрузки их перед приложением.

LogCat выводит это:

02-28 21:12:23.371: D/dalvikvm(21023): Trying to load lib/data/data/com.flotsamworks.seadrift/lib/liblibpng.so 0x4a315c18 02-28 21:12:23.381: D/dalvikvm(21023): Added shared lib/data/data/com.flotsamworks.seadrift/lib/liblibpng.so 0x4a315c18 02-28 21:12:23.381: D/dalvikvm(21023): No JNI_OnLoad found in/data/data/com.flotsamworks.seadrift/lib/liblibpng.so 0x4a315c18, skipping init 02-28 21:12:23.411: D/dalvikvm(21023): Trying to load lib/data/data/com.flotsamworks.seadrift/lib/liblibzip.so 0x4a315c18 02-28 21:12:23.421: D/dalvikvm(21023): Added shared lib/data/data/com.flotsamworks.seadrift/lib/liblibzip.so 0x4a315c18 02-28 21:12:23.431: D/dalvikvm(21023): No JNI_OnLoad found in/data/data/com.flotsamworks.seadrift/lib/liblibzip.so 0x4a315c18, skipping init 02-28 21:12:23.431: D/dalvikvm(21023): Trying to load lib/data/data/com.flotsamworks.seadrift/lib/libminizip.so 0x4a315c18 02-28 21:12:23.451: I/dalvikvm(21023): Unable to dlopen(/data/data/com.flotsamworks.seadrift/lib/libminizip.so): Cannot load library: link_image[2033]: failed to link libminizip.so

Как вы видите, minizip терпит неудачу. но почему? У меня действительно нет подсказки. Компиляция без усилий, никаких проблем нет. Я подозреваю, что он полагается на некоторые вещи, которые у Android нет или более свежие.

Что касается компиляции, то у меня есть только эти параметры компоновщика, которые являются теми же самыми для libzip и libpng. -shared -Wl, - fix-cortex-a8 -lz

Я загрузил проект, если вы хотите посмотреть make файлы и код. Я код/​​это код.... в build/android8_gmake/вы можете найти build.sh, настроить три пути к gcc, g++ и ar. В. /debug/bin вы найдете уже созданные общие объекты, которые я использовал.

http://projects.woutervandongen.com/thirdparty_sharedlibs_28_2_12.zip

Я использую NDKr7b с пользовательской инструментальной цепочкой, созданной: make -standalone-toolchain.sh --platform = android-8 -install-dir =./Standalone-toolchain-api8

Пожалуйста помоги

С Уважением,

Wouter

Теги:
android-ndk
jni

1 ответ

2
Лучший ответ

Довольно глупо!

Поскольку Android не поддерживает fseeko64, minizip не будет правильно связываться. Я искал определение, чтобы обойти это и найти его;

USE_FILE32API

Задача решена!

  • 0
    Отлично!!!!!!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню