【问题标题】:Compiler won't let me use "DDSTextureLoader.h" and "WICTextureLoader.h"编译器不允许我使用“DDSTextureLoader.h”和“WICTextureLoader.h”
【发布时间】:2015-11-14 02:14:11
【问题描述】:

我正在尝试使用 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 的标头,并像大多数人一样开始使用 windows SDK。但是如何修复编译器错误?

【问题讨论】:

    标签: c++ direct3d direct3d11


    【解决方案1】:

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

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

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

    【讨论】:

    • DDSTextureLoader.cppWICTextureLoader.cpp 模块已经在 DirectXTK 库中。您可以使用 NuGet 或项目到项目的引用将 DirectXTK 添加到您的项目中。请参阅 DirectX 工具包wiki
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 2011-01-11
    • 2010-10-13
    • 1970-01-01
    相关资源
    最近更新 更多