c++ - C++中的外部指针问题

标签 c++ directx

我有一个头文件,其中包含许多这样的声明:

extern ID3D10Device* device;

由于多个翻译单元的问题,我不能将它们设为静态,并且出于类似的原因,我不能将它们作为普通指针。但是,当我尝试构建程序时,出现 Unresolved external symbol 链接器错误。我假设这是因为我试图在没有先定义它们的情况下使用指针。然而,这就是问题所在,因为初始化这些 DirectX 对象的方式是将指针的地址作为参数传递给专用方法。 - 我可能错了,但我假设这是编译器/链接器/任何看不到定义的问题。

我要做的就是让这些指针(用于图形设备、深度缓冲区等)对多个类可见。如何实现?

最佳答案

您需要在某个翻译单元中定义指针。链接器在提示,因为您似乎没有在任何地方这样做。您应该在文件范围内将它们声明为

ID3D10Device* device = NULL;

在您调用初始化它们的 DirectX 函数的源文件中。只需确保声明仅在一个源文件中进行,然后 extern 语句应放在相关的头文件中,所有需要使用这些指针的翻译单元都包含该头文件。

关于c++ - C++中的外部指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7569566/

相关文章:

c++ - ofstream 会自动关闭其文件吗?

c++ - 从 ostringstream 传递到 istringstream 的技巧

c++ - 调用子类的虚拟成员时发生崩溃/段错误

java - 施工期间的虚拟功能。为什么 Java 不同于 C++

wpf - 使用 DirectX 11 在 WPF 控件上渲染

c++ - DirectX 渲染到纹理

c++ - std::unique 类对象

c++ - 在没有 DirectX 的情况下在 Windows 上获得精确的屏幕刷新率?

c# - 模板缓冲区读/写掩码

c++ - Windows 函数中的 char* 或 LPCWSTR