0

Android ndk で 2 つの異なるライブラリのシングルトンを作成しようとしています。

私が持っていると想像してください:

  • lib1 (静的)
  • lib2 (共有)
  • lib3 (共有)

lib1lib2およびの LOCAL_STATIC_LIBRARIES として常に定義されます。lib3

しかし、lib2 でシングルトンの値を設定すると、この値は lib3 で NULL のままになります。

このアーキテクチャでシングルトンを構築するにはどうすればよいですか?

4

1 に答える 1

0

ここここで説明されているように、問題は一般的であり、良い解決策を認めていません。共有ライブラリには、コードとデータの両方で、リンクされた静的ライブラリの個別のコピーがあります。異なるSOの静的ライブラリインスタンスは相互作用しないだけであり、多くの理由もあります。

必要なのは、両方がアクセスできるメモリのチャンクです。シングルトンをJavaレベルまで上げることができます(結局のところ、Androidの下にあります)。よく知られている名前の一時ファイルを作成できます。経営幹部レベルのTLSも役立つかもしれません。

Androidの共有メモリ機能(ashmem)は、名前付きブロックを提供しないため、役に立ちません。

于 2012-11-06T01:35:05.920 に答える