XYZ.dll は、グローバル変数 int x を定義します。ABC.c も同じグローバル変数 int x を定義しています。XYZ.dll を ABC.exe にリンクするにはどうすればよいですか? グローバル名前空間でのこの競合はどのように解決されますか?
2 に答える
1
これは本当に良い質問です。本当の答えが得られることを願っています。私が収集できることから、dll からの「グローバル」シンボルは、関連するヘッダー ファイルを介して明示的にインポートする必要があります。同じシンボルが 2 つある場合、c ファイルで最後に定義されたシンボルが優先されます。つまり、ABC.c があり、上部に XYZ.h をインポートしてから int x を定義する場合です。XYZ.h から int x を上書きするか、コンパイル時エラーが発生します。
于 2009-07-27T06:17:38.317 に答える
0
変数intxは、XYZのヘッダーファイルでexternintxとして宣言する必要があります。そして、この変数を使用する場合は、この変数を宣言するだけです。グローバル空間のABC.cのように、この変数をintxのように宣言します。
于 2009-07-27T06:34:44.617 に答える