2012-02-28 12 views
1

Androidでminizipを動作させるのに問題があります。私はまずアプリケーション共有ライブラリとの静的なものとしてリンクしようとしました。しかし、そのminizipライブラリからコードを使用するとすぐに私は UnsatisfiedLinkErrorを得ました。私は、libzipとlibpngを動作させるライブラリをいくつか持っています。比較するために、私は3つすべてを共有ライブラリにコンパイルし、System.loadLibrary( "libpng")を使用します。 System.loadLibrary( "libzip"); System.loadLibrary( "minizip");アプリケーションの前にロードします。Android JNIにミニジップコードを読み込むことができません。 libminizip.soとのリンクに失敗しました

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が失敗した見ることができるように。しかし、なぜ?私は本当に手掛かりがありません。コンパイルは簡単で問題はありません。私はいくつかのものに頼っていると思う。アンドロイドには最新のlibzがない。

コンパイルに関しては、libzipとlibpngで同じリンカオプションしか設定していません。 -shared -Wl、-fix-cortex-a8 -lz

makefileとコードを見たい場合は、プロジェクトをアップロードしました。 ビルド/アンドロイド8_gmake /でbuild.shを見つけることができます。gcc、g ++、arへの3つのパスを設定します。 ./debug/binには、私が使った共有オブジェクトがすでにビルドされています。 make-standalone-toolchain.sh --platform =アンドロイド-8 --install-dirを= /スタンドアロン・ツールチェーン-api8

:私はによって生成されたカスタムツールチェーンとNDKr7bを使用

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

よろしく、

はWouter

答えて

2

はかなり愚か助けてください!

Androidはfseeko64をサポートしていないので、minizipは正しくリンクされません。 これを回避するために定義を探して、それが見つかった。

USE_FILE32API 

問題が解決しました。

+0

優秀!!!!!! – neevek

関連する問題