2

私のプログラムとは別にコンパイルされた共有オブジェクトライブラリ X を使用するプログラムがあるとします。ここで、X のコードを作成するときに、プログラム (X ライブラリを使用する予定) で宣言されている A などの変数を参照する必要があります。X のコード内で変数 A を参照するにはどうすればよいですか? 弱い参照?外部?それとも他のテクニック?

4

2 に答える 2

5

extern次のキーワードを使用します。

extern int A;

// later:
call_a_function(A);
A = something_else;

はい、共有オブジェクトが個別にコンパイルされていれば機能します。その場合、コンパイラは変数の名前でエクスポートされたシンボルを内部的に生成し、動的リンカーはそれを検索します。

更新: @Hristo が指摘したように、さらに、-rdynamicこれを機能させるには、ユニットをビルドするときにリンカー フラグを指定する必要があります。

于 2012-06-19T17:15:03.873 に答える
4

これを機能させるには、プログラムをコンパイルするときに-rdynamicフラグを指定する必要があります。次に、 externキーワードを使用するだけで、共有オブジェクト ライブラリはプログラム内の変数を参照できます。

于 2012-06-19T17:35:04.963 に答える