1

C ライブラリ (libA など) のいくつかの静的変数をエクスポートして、他の C ファイルで外部から使用したいと考えています。

以前はデスクトップ アプリケーションにキーワードを使用してexternいましたが、機能していましたが、JNI と Android に移行しexternたとき、他の C ファイルに関係なく、libA の *.so をビルドしようとすると、キーワードがうまく機能しませんでした。 (これは libA 静的変数を使用します)、libA のすべての「extern 変数」に対して「未定義の参照」のコンパイラ エラーが発生しました。

そのために、libA の *.so を生成するときに C ファイルをリンクしようとしましたが、実行時に、変数のアドレスが異なることに気付きました。これは、externキーワードの通常の結果ではありません。(つまり、同じアドレス<=>「同じ変数」ではなく、異なるアドレス<=>異なる変数を操作しています)。

それで、この問題を解決する方法はありますか?おそらく memcpy または memset を使用して、それが適切な方法である場合は、その方法を教えてください。

前もって感謝します。

ブラジル

4

1 に答える 1

0

JNI ファイルに環境変数を設定すると解決しますか?

例えば: setenv("GLOBALVARIABLE", "ON", 1);

于 2013-04-21T01:29:26.047 に答える