我正在尝试使用DirectXTex库,但每次尝试时,编译器都会一直给出一个错误。更具体地说,我想使用标题DDSTextureLoader.h
和WICTextureLoader.h
,以便我可以使用函数CreateWICTextureFromFile
和CreateDDSTextureFromFile
,这样我就可以将纹理加载到我的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的标头,并像大多数人一样开始使用Windows SDK。但是我如何修复编译器错误呢?
答案 0 :(得分:1)
这些行似乎是您问题的根源:
#include "DDSTextureLoader.cpp"
#include "WICTextureLoader.cpp"
您应该只在源文件中包含头文件,而不是其他源文件。相反,您应该将您的应用程序与DirectXTK library链接起来。