C++ で記述された Android プロジェクトがあり、リンク フェーズに問題があります。コードは、一緒にリンクする必要があるいくつかの静的ライブラリに配置されます。
このトピックについてネット上で多くの質問と回答を見つけましたが、それらのほとんどは、私のライブラリをLOCAL_STATIC_LIBRARIES
Android.mk ファイルに入れることを提案しています。しかし、これを行うと、の内容LOCAL_STATIC_LIBRARIES
が単純に無視されることがわかりました。私のライブラリはリンクされておらず、ここにダミー テキストを追加しても、エラーや警告メッセージは生成されません。
私はこのようにしてみました:
LOCAL_STATIC_LIBRARIES := MyLib.a
またはフルパスで:
LOCAL_STATIC_LIBRARIES := $(LOCAL_PATH)/MyLib.a
それらのどれも機能しませんでした。
静的ライブラリを配置LOCAL_LDLIBS
するとリンクされますが、システム以外のライブラリが使用されているという警告メッセージが表示され、ビルドが間違っている可能性があります。
私の Android.mk ファイルの内容は次のとおりです。
LOCAL_LDLIBS := $(LOCAL_PATH)/MyLib.a ...
そして、私はこのメッセージを受け取りました:
Android NDK: WARNING:jni/Android.mk:myapp: non-system libraries in linker flags: jni/MyLib.a
Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES
Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the
Android NDK: current module
正しい使い方が見つからなかったLOCAL_STATIC_LIBRARIES
ので、助けてください!
OpenSuSE x86 に android-ndk-r9 と android-sdk_r22.2.1 があり、target=android-18 を使用しています