出于某种原因,每当我将 directx 变量声明为 extern 时,我都会收到链接错误。
例子:
在一些头文件中:
extern ID3D10EffectMatrixVariable* pWorldVariable;
在其他一些 cpp 文件中,我包含了包含 pd3dDevice 的 .h 文件:
pWorldVariable = NULL;
会弹出类似这样的错误:
2>main.obj : error LNK2001: unresolved external symbol "struct ID3D10EffectMatrixVariable * pProjectionVariable" (?pProjectionVariable@@3PAUID3D10EffectMatrixVariable@@A) 2>C:\Users\steve\documents\visual studio 2010\Projects\Shyr\Debug\Shyr.exe : fatal error LNK1120: 1 unresolved externals
在我去掉 extern
声明的那一刻,它的编译就像一个魅力。当然,我实际上想从我正在处理的 dll 中引用几个变量,例如我的交换链、设备、目标 View 等。有人知道怎么回事吗?
(另外,是的,它只声明了一次)
为了证明问题与 DirectX 变量无关,我创建了一个外部变量“george”并将其初始化为 4。然后我在别处引用它并更改了值。编译得很好。
最佳答案
extern
用于声明一种对跨源文件外部使用的变量的引用(即,您通常声明变量并在每个文件中使用它您必须使用 extern
)
您还必须在源文件中声明变量。
例子.cpp
ID3D10EffectMatrixVariable* pWorldVariable = 0;
YetAnotherFile.cpp
extern ID3D10EffectMatrixVariable * pWorldVariable;
关于c++ - "Extern"与 DirectX 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5527063/