无法将迷你邮政编码加载到Android JNI中。未能链接libminizip.so

无法将迷你邮政编码加载到Android JNI中。未能链接libminizip.so,android,c,android-ndk,java-native-interface,Android,C,Android Ndk,Java Native Interface,我很难让minizip在android上工作。我首先尝试将它作为静态链接到我的应用程序共享库。然而,当我使用minizip库中的代码时,我得到了一个 不满意的链接错误。我还有一些其他的库可以工作,libzip和libpng。为了进行比较,我将这三个库编译成共享库,并使用System.loadLibrary(“libpng”);系统加载库(“libzip”); 系统加载库(“minizip”);在应用程序之前加载它们 LogCat输出以下信息: 02-28 21:12:23.371:D/dalv

我很难让minizip在android上工作。我首先尝试将它作为静态链接到我的应用程序共享库。然而,当我使用minizip库中的代码时,我得到了一个 不满意的链接错误。我还有一些其他的库可以工作,libzip和libpng。为了进行比较,我将这三个库编译成共享库,并使用System.loadLibrary(“libpng”);系统加载库(“libzip”); 系统加载库(“minizip”);在应用程序之前加载它们

LogCat输出以下信息:


02-28 21:12:23.371:D/dalvikvm(21023):尝试加载lib/data/data/com.flotsamworks.seadrift/lib/liblibpng.so 0x4a315c18
02-28 21:12:23.381:D/dalvikvm(21023):添加了共享lib/data/data/com.flotsamworks.seadrift/lib/liblibpng.so 0x4a315c18
02-28 21:12:23.381:D/dalvikvm(21023):在/data/data/com.flotsamworks.seadrift/lib/liblibpng.so 0x4a315c18中未找到JNI_OnLoad,跳过初始化
02-28 21:12:23.411:D/dalvikvm(21023):尝试加载lib/data/data/com.flotsamworks.seadrift/lib/liblibzip.so 0x4a315c18
02-28 21:12:23.421:D/dalvikvm(21023):添加了共享lib/data/data/com.flotsamworks.seadrift/lib/liblibzip.so 0x4a315c18
02-28 21:12:23.431:D/dalvikvm(21023):在/data/data/com.flotsamworks.seadrift/lib/liblibzip.so 0x4a315c18中未找到JNI_OnLoad,正在跳过初始化
02-28 21:12:23.431:D/dalvikvm(21023):尝试加载lib/data/data/com.flotsamworks.seadrift/lib/libminizip.so 0x4a315c18
02-28 21:12:23.451:I/dalvikvm(21023):无法dlopen(/data/data/com.flotsamworks.seadrift/lib/libminizip.so):无法加载库:link_image[2033]:链接libminizip.so失败

正如您所看到的,minizip失败了。但是为什么呢?我真的不知道。编译很容易,没有问题。我怀疑它依赖的是android没有的东西,或者是更新的libz

至于编译,我只设置了这些链接器选项,它们对于libzip和libpng都是相同的-共享-Wl,--fix-cortex-a8-lz

如果你想看一下makefile和代码,我已经上传了这个项目。 我的代码是。。。。在build/android8_gmake/中,您可以找到build.sh,配置到gcc、g++和ar的三条路径。 在./debug/bin中,您将找到我使用的已构建共享对象

我将NDKr7b与以下生成的自定义工具链一起使用: make-standalone-toolchain.sh--platform=android-8--install dir=./standalone-toolchain-api8

请帮忙

问候,

沃特相当愚蠢

由于Android不支持fseeko64,minizip将无法正确链接。 我寻找一个定义来绕过这个问题,发现它是

USE_FILE32API
问题解决了