https://stackoverflow.com/a/11467040/1442443からの質問
私の最終的な目標は、ユーザースペーススタックをダンプすることです。
私はAndroidプラットフォーム上の実行可能ファイルに以下のようにcppファイルを構築しようとします。したがって、tryToGetStack()を呼び出すことにより、実行時に実行可能ファイルの呼び出しスタックを取得できます。
#include <utils/CallStack.h>
namespace android
{
extern "C" void tryToGetStack()
{
CallStack stack;
stack.update();
stack.dump("");
}
}
CallStack.tppはlibutilsにあるため、Android.makにlib設定を追加します
LOCAL_SHARED_LIBRARIES + = libutils
しかし、私は常にメッセージでエラーが発生します:
エラー:「android :: CallStack :: CallStack()」への未定義の参照
エラー:「android :: CallStack :: update(int、int)」への未定義の参照
..。
実行可能ファイルは、実行時に.soファイルをロードするのではなく、リンク時にシンボルを解決するようです。何かが足りないのですか、それともAndroidビルドシステムに制限がありますか?
簡単な質問ですが、本当に助けが必要です...
update1
別の実行可能ファイルにコードを追加しようとしています。結果は同じです...Androidビルドシステムのルールを知っている人はいますか?
update2
私のコンソールには「targetStaticExecutable:...」というキーワードがいくつかありますが、それが答えだと思います。