c++ - 编译器不允许我使用 "DDSTextureLoader.h"和 "WICTextureLoader.h"

标签 c++ direct3d direct3d11

我正在尝试使用 DirectXTex 库,但每次我尝试时,编译器都会不断给我一个错误。更具体地说,我想使用标题 DDSTextureLoader.hWICTextureLoader.h这样我就可以使用函数 CreateWICTextureFromFileCreateDDSTextureFromFile这样我就可以将纹理加载到我的 Direct3D11 应用程序中。但是编译器给了我 3 个错误:

Function 'DXGI_FORMAT MakeSRGB (DXGI_FORMAT)' already has a body

'=': unable to resolve function overload此错误重复 2 次

'SetDebugObjectName': ambiguous call to overloaded function此错误重复 3 次

编译器还说这些错误来自文件 WICTextureLoader.cpp

我不确定如何修复这些错误...下面是我的代码 (我包含了我在游戏中使用的所有头文件)

#include <windows.h>    
#include <D3D11.h>                  
#include <dinput.h> 
#include <D3Dcompiler.h>            
#include <DDSTextureLoader.h>
#include <WICTextureLoader.h>
#include <sstream>
#include <SimpleMath.h>
#include <SpriteFont.h>
#include "DDSTextureLoader.cpp"
#include "WICTextureLoader.cpp"

CreateDDSTextureFromFile(device, L"SpaceSky512.dds", &SkyTexture, &SkyTextureResource);
CreateWICTextureFromFile(device, DevContext, L"grass.jpg", NULL, &Texture, 0);

我不再使用旧版 directX SDK 中的 header ,而是像大多数人一样开始使用 Windows SDK。但是我该如何修复编译器错误?

最佳答案

这些行似乎是您问题的根源:

#include "DDSTextureLoader.cpp"
#include "WICTextureLoader.cpp"

您应该只在源文件中包含头文件,而不是其他源文件。相反,您应该将您的应用程序链接到 DirectXTK library .

关于c++ - 编译器不允许我使用 "DDSTextureLoader.h"和 "WICTextureLoader.h",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33704445/

相关文章:

c++ - Direct3D 桌面重复 : How to Recover From Changing Screen Resolution?

c++ - 递归的意外性能结果

c# - 如何判断用户何时从 Windows 的 Ctrl-Alt-Del 屏幕返回

gpgpu - GPU 和决定论

c# - 使用 Direct3D 时使用 C++ 而不是 C# 有什么优势吗?

graphics - 实现 API 以等待 d3d10 命令完成

c++ - DirectX:在视口(viewport)中放大绘制位图图像导致质量低下?

c++ - 输出流作为类成员

c++ - 处理安装依赖项的最佳方法?

c++ - 如何编写一个带有指定为 GeneratorParam 类型的 ImageParam 的生成器?