1

私のC++コードでは、別のファイル「A」で実際に変更されているファイル「B」の変数「VarX」を利用したいと考えています。そこで、次のリンクを見て、 extern の概念を使用しました。

extern を使用してソース ファイル間で変数を共有するにはどうすればよいですか?

エラー LNK2005: "unsigned int VarX" (?VarX@@3IA) は ***.obj で既に定義されています。

私のシナリオは次のとおりです。

File1.h
extern unsigned int VarX;

File2.cpp
#include File1.h
unsigned int VarX = 101;

File3.cpp
#include File1.h
unsigned int temp = VarX;

IMP NOTE: ヘッダー ファイル File1.h には、Extern 定義とは別に、他の多くの構造体定義と他の多くの rdefinitions があります。

誰かがこれで私を助けることができますか?File2.cpp で変更された VarX の値を別のファイル File3.cpp で読み取るにはどうすればよいですか。

4

1 に答える 1

1

問題はアクセシビリティではなく、複数の定義です。エラーメッセージは、再定義しているコードのどこかで非常に明確ですVarX

一般的な原因は次のとおりです。

  • 無効なビルド - コンパイルする前にビルドをクリーンアップしましたか?
  • 宣言なしで、複数unsigned int VarX = 101;またはunsigned int VarX;どこかに(ヘッダーまたは実装ファイル内に)あります。extern
  • コードのどこ#include "File2.cpp"かで、複数回コンパイルされる原因になります。

私の賭けは 2 番目の可能性です。

于 2012-04-24T12:54:21.370 に答える