出于某种原因,每当我将directx变量声明为extern时,我都会收到链接错误。
示例:
在某些头文件中:
extern ID3D10EffectMatrixVariable* pWorldVariable;
在其他一些cpp文件中,我包含了包含pd3dDevice的.h文件:
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变量是隔离的,我创建了一个外部变量“george”并将其初始化为4.然后我在别处引用它并更改了值。编译得很好。
答案 0 :(得分:2)
extern
用于向源文件外部使用的变量声明一种引用(即您正常声明变量,并且在您使用它的每个文件中,您必须使用extern
)
您还必须在源文件中声明变量。
Example.cpp
ID3D10EffectMatrixVariable* pWorldVariable = 0;
YetAnotherFile.cpp
extern ID3D10EffectMatrixVariable * pWorldVariable;
答案 1 :(得分:0)
我遇到的问题是不理解外部声明与定义的问题。这个答案有所帮助,但你必须阅读整个事情,然后做一些研究来理解它:
What is the difference between a definition and a declaration?