我在使用minizip在android上工作时遇到了麻烦。我首先尝试将其作为静态链接到我的应用程序共享库。但是,只要我使用该迷你剪辑库中的代码,我就得到了 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没有的东西或者更新的libz。
至于编译我只设置了这些链接器选项,这些选项与libzip和libpng完全相同。 -shared -Wl, - fix-cortex-a8 -lz
如果您想查看makefile和代码,我已经上传了该项目。 我编码/是代码....在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
答案 0 :(得分:2)
相当愚蠢!
由于Android不支持fseeko64 minizip将无法正常链接。 我找了一个定义来解决这个问题并发现它;
USE_FILE32API
问题解决了!