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 变量无关,我创建了一个外部变量“george”并将其初始化为 4。然后我在其他地方引用它并更改了值。编译就好了。

4

2 回答 2

2

extern用于声明对跨源文件外部使用的变量的一种引用(即,您通常声明该变量,并且在您使用它的每个文件中,您必须使用声明对它的内部引用extern

您还必须在源文件中声明变量。

例子.cpp

ID3D10EffectMatrixVariable* pWorldVariable = 0;

YetAnotherFile.cpp

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

我遇到的问题是不理解 extern 声明与定义。这个答案有帮助,但你必须阅读整件事,然后做一些研究来理解它:

定义和声明有什么区别?

于 2011-04-03T13:59:11.723 回答