私は、public static int theMaxFramesが存在するMODELというクラスを持っています。クラスは独自のヘッダファイルで定義されています。 theMaxFramesは、MODELクラス内のクラスと、MODELクラスにもあるvoid set_up()という1つの関数によってアクセスされます。 Render.cppソースファイルには、Direct3D.cppソースファイル内の関数を呼び出す関数が含まれています。この関数は、MODELオブジェクトを通じてset_up()関数を呼び出します。これは、これらの2つのソースファイルとMaxFrames間の唯一の接続です。Visual C++リンカーエラー
私は私のコードをコンパイルしようとすると、私は次のエラーメッセージが出ます:
1> Direct3D.obj:エラーLNK2001:未解決の外部シンボル? "パブリック:静的int型MODEL :: theMaxFrames"(MODEL @ theMaxFrames @ @ 2HA)
1> Render.obj:エラーLNK2001:未解決の外部シンボル? "パブリック:静的int型MODEL :: theMaxFrames"(2HA @@ MODEL @ theMaxFrames)
1> C:\ Users \ユーザーバイロン\ Documents \ Visual Studio 2008 \ Projects \ xFileViewer \ Debug \ xFileViewer.exe:致命的なエラーLNK1120:1未解決の外部
ありがとうございました!これで解決しました。しかし、なぜこれが必要なのか分かりません。必要な洞察力を提供することはできますか? – LordByron
これは言語要件です。あるクラスに静的変数を宣言する場合は、そのクラス本体の外側の定義をどこかで指定する必要があります。 –
ヘッダーファイルには可変割り当てが含まれていないためです。実行可能ファイルに存在する必要のあるものは、どこかのCPPファイルで宣言する必要があります。ヘッダーは、さまざまなソースファイル間の契約であり、物事を提供します。ソースファイルは、ヘッダーで指定されたコントラクトを満たす実装です。契約を満たすことができない場合、リンカエラーが発生します。 –