問題描述
編譯器不允許我使用“DDSTextureLoader.h”和“WICTextureLoader.h” (Compiler won't let me use "DDSTextureLoader.h" and "WICTextureLoader.h")
我正在嘗試使用 DirectXTex 庫,但每次嘗試時,編譯器都會不斷給我一個又一個錯誤。更具體地說,我想使用標題 DDSTextureLoader.h
和 WICTextureLoader.h
以便我可以使用函數 CreateWICTextureFromFile
和 CreateDDSTextureFromFile
所以我可以將紋理加載到我的 Direct3D11 應用程序中。但是編譯器給了我 3 個錯誤:
Function 'DXGI_FORMAT MakeSRGB (DXGI_FORMAT)' has a body
'=': unable to解決函數重載
這個錯誤重複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 . 但是如何修復編譯器錯誤?
我停止使用舊版 directX SDK 的標頭,並像大多數人一樣開始使用 windows SDK。但是如何修復編譯器錯誤? 我停止使用舊版 directX SDK 的標頭,並像大多數人一樣開始使用 windows SDK。但是如何修復編譯器錯誤?參考解法
方法 1:
These lines appear to be the source of your problem:
#include "DDSTextureLoader.cpp"
#include "WICTextureLoader.cpp"
You should only include header files in your source files, not other source files. Instead you should link your application against the DirectXTK library.
(by Soon_to_be_code_master、legalize)