UWP CreateDDSTextureFromFile无法归档.dds文件

时间:2018-03-26 17:21:02

标签: c++ uwp directx-11

我目前正在尝试将.dds文件放到多维数据集中,但无法在文件中加载。

我正在使用nuget的DirectXTK库,更具体地说是DDSTextureLoarder。

CreateDDSTextureFromFile(m_deviceResources->GetD3DDevice(), L"..\Assests\rocks.DDS", nullptr, &cubeStoneRV);

出现的错误:

错误LNK2019未解析的外部符号__imp__CreateFileW @ 28在函数“long __cdecl DirectX :: LoaderHelpers :: LoadTextureDataFromFile(wchar_t const *,class std :: unique_ptr>&amp ;, struct DirectX :: DDS_HEADER const * *,unsigned char)中引用const * *,unsigned int *)“(?LoadTextureDataFromFile @ LoaderHelpers @DirectX @@ YAJPB_WAAV?$ unique_ptr @ $$ BY0A @ EU?$ default_delete @ $$ BY0A @ E @ std @@@ std @@ PAPBUDDS_HEADER @ 2 @ PAPBEPAI @Z)

我认为问题在于试图获得D3DDevice,但我尝试的一切都没有用。

工作从基础UWP DirectX11模板开始,在Sample3DSceneRenderer / phc之外,没有其他任何改变。

编辑:如果有更好的方法,我可以提供建议/建议

1 个答案:

答案 0 :(得分:0)

对于UWP,您无法使用CreateFile。您必须使用CreateFile2

    #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
        ScopedHandle hFile(safe_handle(CreateFile2(fileName,
                           GENERIC_READ,
                           FILE_SHARE_READ,
                           OPEN_EXISTING,
                           nullptr)));
    #else
        ScopedHandle hFile(safe_handle(CreateFileW(fileName,
                           GENERIC_READ,
                           FILE_SHARE_READ,
                           nullptr,
                           OPEN_EXISTING,
                           FILE_ATTRIBUTE_NORMAL,
                           nullptr)));
    #endif

我已在DirectX Tool Kit中执行此操作,但您需要使用库的正确构建配置。可能你使用的是desktop NuGet版本而不是UWP NuGet版本。