1

何らかの理由で、directx 変数を extern として宣言するたびに、リンク エラーが発生します。

例:

一部のヘッダー ファイルでは、次のようになります。

extern ID3D10EffectMatrixVariable* pWorldVariable;

pd3dDevice を含む .h ファイルをインクルードする他の cpp ファイル:

pWorldVariable = NULL;

次のようなエラーが表示されます。

2>main.obj: エラー LNK2001: 未解決の外部シンボル "struct ID3D10EffectMatrixVariable * pProjectionVariable" (?pProjectionVariable@@3PAUID3D10EffectMatrixVariable@@A) 2>C:\Users\steve\documents\visual studio 2010\Projects\Shyr\Debug\Shyr .exe : 致命的なエラー LNK1120: 1 つの未解決の外部

宣言を取り除いたextern瞬間、それは魅力のようにコンパイルされます。もちろん、実際には、作業中の dll からスワップ チェーン、デバイス、ターゲット ビューなど、いくつかの変数を参照したいと考えています。何が起きているか知っている人はいますか?

(また、はい、一度だけ宣言されました)

問題が DirectX 変数に限定されていることを証明するために、extern 変数「george」を作成し、それを 4 に初期化しました。次に、それを別の場所で参照して、値を変更しました。うまくコンパイルされました。

4

2 に答える 2

2

externソースファイル全体で外部的に使用される変数への一種の参照を宣言するために使用されます(つまり、変数を通常どおり宣言し、それを使用する各ファイルで、を使用してそれへの内部参照を宣言する必要がありますextern

ソースファイルでも変数を宣言する必要があります。

Example.cpp

ID3D10EffectMatrixVariable* pWorldVariable = 0;

まだ別のファイル.cpp

extern ID3D10EffectMatrixVariable * pWorldVariable;
于 2011-04-03T02:02:12.537 に答える
0

私が遭遇した問題は、 extern 宣言と定義を理解していないという問題でした。この回答は役立ちますが、全体を読んでから、理解するためにいくつかの調査を行う必要があります。

定義と宣言の違いは何ですか?

于 2011-04-03T13:59:11.723 に答える