使用DirectXTex库

时间:2014-06-21 11:49:33

标签: c++ directx

我正在尝试将我的DirectX项目更新到新的Windows 8.1 sdk(2013或其他东西)并摆脱2010年6月的DirectX SDK。我已经走了很远,但我遇到了链接器错误LNK2001

错误3错误LNK2001:未解析的外部符号“long __cdecl DirectX :: CreateDDSTextureFromFile(struct ID3D11Device *,wchar_t const *,struct ID3D11Resource * *,struct ID3D11ShaderResourceView * *,unsigned int,enum DirectX :: DDS_ALPHA_MODE *)”(? CreateDDSTextureFromFile @ DirectX @@ YAJPAUID3D11Device @@ PB_WPAPAUID3D11Resource @@ PAPAUID3D11ShaderResourceView @@ IPAW4DDS_ALPHA_MODE @ 1 @@ Z)C:\ Users \ DimmerFan \ documents \ visual studio 2013 \ Projects \ MikaelD3D \ MikaelD3D \ TextureClass.obj MikaelD3D

我想这并不多说。这是带错误的代码:

HRESULT result;

result = DirectX::CreateDDSTextureFromFile(device, filename, nullptr, &m_texture, 0, nullptr);
if (FAILED(result))
{
    return false;
}

return true;

我从DirectXTex SDK获取此函数DirectX::CreateDDSTextureFromFile。 但是我不知道将这个库包含在我的项目中。我不知道会出现什么问题。 Intellisence弹出,一切看起来都很好。我已将D:\ DirectXTex \ DDSTextureLoader包含在我的Include Directorys中,我包括#include <DDSTextureLoader.h>感谢您对此错误的任何帮助

//MikaelTörnqvist

2 个答案:

答案 0 :(得分:3)

您可以尝试将DDSTextureLoader.h和DDSTextureLoader.cpp添加到您的项目中,DirectXTex作为源代码提供,如果您想使用它,则应将其添加到您的解决方案/项目中。

您也可以自己构建DirectXTex项目,并使用标题和库。

答案 1 :(得分:2)

DirectXTex的套餐包括“独立版”&#39; DDSTextureLoader,WICTextureLoader和ScreenGrab的版本。您将.cpp和.h文件放入项目中,因为它们未包含在DirectXTex.lib中。

DirectX工具包具有“集成”功能。这些模块的版本,因此它们在DirectXTK.lib中。

为什么您要问的文件有两个版本?请参阅我关于该主题的blog帖子。