Компилятор не позволяет мне использовать DDSTextureLoader.h и WICTextureLoader.h

Я пытаюсь использовать библиотеку 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, как и большинство людей. Но как я могу исправить ошибки компилятора?


person Soon_to_be_code_master    schedule 14.11.2015    source источник


Ответы (1)


Эти строки кажутся источником вашей проблемы:

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

В исходные файлы следует включать только файлы заголовков, а не другие исходные файлы. Вместо этого вы должны связать свое приложение с библиотекой DirectXTK.

person legalize    schedule 21.11.2015
comment
Модули DDSTextureLoader.cpp и WICTextureLoader.cpp уже есть в библиотеке DirectXTK. Вы можете использовать NuGet или ссылки между проектами, чтобы добавить DirectXTK в свой проект. См. набор инструментов DirectX в вики. - person Chuck Walbourn; 23.11.2015