4

cppファイルにグローバル変数とメソッドのセットがあります。

int a;

int b;

int c;

void DoStuff()
{

}

ヘッダーファイルで、externキーワードを使用して明示的に宣言しました。私の問題は、ヘッダーファイルを別のC ++ファイルにインクルードすると、外部変数とメソッドを使用できないことです。エラーLNK2001:メソッドと変数の未解決の外部シンボルを示すリンカーエラーが発生します。私はここで何を間違えましたか?

PS:DoStuff()メソッドは変数を設定します。すべてのヘッダーファイルとcppファイルは同じプロジェクトフォルダーにあります。

ありがとう!

4

4 に答える 4

2

これを試して

これらの変数は、単に宣言するのではなく、ヘッダー内で定義してください。

extern int x;単なる宣言です(定義ではありません)

簡単な例

a.cpp

 int a,b,c; //definition

 void doStuff(){ 

 }

b.cpp

extern int a,b,c; //extern keyword is mandatory
void doStuff();   //extern keyword is optional because functions by default have external linkage

int main()
{

   doStuff();
}
于 2010-07-15T04:20:38.600 に答える
1

これらの変数を定義する.cppファイルとextern、ヘッダーで宣言されている関数をコンパイルセットに含める必要があります。定義を含む.cppファイルがコンパイルされておらず、ヘッダーファイルからの宣言を使用するファイルに対してリンクされていない場合、リンカーエラーが発生します。

于 2010-07-15T04:19:58.353 に答える
0

メソッドと変数を含むソースファイルに対応するオブジェクトファイルにリンクしていることを確認しますか?

于 2010-07-15T04:20:38.897 に答える
0

Visual-C ++(タグによる)を使用しているので、コンパイル時にすべてのファイルが同じプロジェクトにあることを確認します。ファイルを作成するだけでなく、プロジェクトを作成していることを確認してください。

I doubt this is the case, but you also might want to check that the source files are either compiled as C or as C++, or you might get into some trouble with the naming scheme.

于 2010-07-15T04:24:04.347 に答える