何らかの理由で、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 に初期化しました。次に、それを別の場所で参照して、値を変更しました。うまくコンパイルされました。