2015-11-14 37 views
1

我想使用DirectXTex庫,但每次嘗試時,編譯器都會給我一個接一個的錯誤。更具體地說,我想使用標頭DDSTextureLoader.hWICTextureLoader.h,以便我可以使用函數CreateWICTextureFromFileCreateDDSTextureFromFile,這樣我就可以將紋理加載到我的Direct3D11應用程序中。但是,編譯器給了我3個錯誤:編譯器不會讓我使用「DDSTextureLoader.h」和「WICTextureLoader.h」

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的大多數人一樣開始了。但是,我如何解決編譯器錯誤?

回答

1

這些線看起來是你的問題的根源:在源文件中

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

您應該只包括頭文件,而不是其他的源文件。相反,您應該將您的應用程序與DirectXTK library關聯起來。

+0

「DDSTextureLoader.cpp」和「WICTextureLoader.cpp」模塊已存在於DirectXTK庫中。您可以使用NuGet或項目到項目的引用來將DirectXTK添加到您的項目中。查看DirectX工具包[wiki](https://github.com/Microsoft/DirectXTK/wiki/DirectXTK)。 –

相關問題