9

C++ で記述された Android プロジェクトがあり、リンク フェーズに問題があります。コードは、一緒にリンクする必要があるいくつかの静的ライブラリに配置されます。

このトピックについてネット上で多くの質問と回答を見つけましたが、それらのほとんどは、私のライブラリをLOCAL_STATIC_LIBRARIESAndroid.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 を使用しています

4

2 に答える 2