c++ - "Extern"与 DirectX 变量?

标签 c++ directx directx-10

出于某种原因,每当我将 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/

相关文章:

c++ - 如何将bitset变量的内容存储到c中的uint32

c++ - 当从 DirectX BackBuffer 拉伸(stretch)到 WIndow 时,Windows 使用点采样

c++ - DirectX 设备大写字母

C++ CLR 不会在调试之外编译

c++ - 定义 BOOST_PHOENIX_ARG_LIMIT 没有效果

c++ - 在 DirectX 中跨线程传递纹理的数据竞争

c++ - 在 DirectX 中显示视频

c++ - 在 DirectX 10/11 中从 GPU 取回变换后的顶点

c++ - DirectX 11 从全屏切换 -> 窗口问题

c++ - C : Using substr to parse a text file