1

NDK プロジェクトをコンパイルしようとしています。そこで、外部の .so-File を使用する必要があります。makefile がこのライブラリをコンパイルしているため、libpcan.so.0.6 という名前にコンパイルされました。

LDNAME = libpcan.so
SONAME = $(LDNAME).0
TARGET = $(SONAME).6

私の receivetest.c-File には、この libpcan.so.0.6 に含まれる関数が必要です。android-toolchain はファイル末尾の「.so.0.6」を受け入れないため、ファイルの名前を libpcan.so に変更しました。私の Android.mk は、この .so を PREBUILD_SHARED_LIBRARY として受け取り、 receivetest.so をコンパイルします。ツールチェーンはエラーなしで動作しています。

Androidアプリを起動すると、エラーメッセージが表示されます:

 java.lang.ExceptionInInitializerError
Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1891]:    36 could not load needed library 'libpcan.so.0' for 'libreceivetest.so' (load_library[1093]: Library 'libpcan.so.0' not found)*

私の質問: .so ファイルを作成した後に問題なく名前を変更できますか? .so.0.6 を .so に名前変更した後、アプリが libpcan.so.0 をロードしたいのはなぜですか? この .so は ndk-toolchain で正常に動作しますか?

4

1 に答える 1