UWP中使用DirectXTK的CreateDDSTextureFromFile加载DDS文件失败求助
解决DirectXTK加载DDS纹理时LNK2019链接错误的办法
看起来你在尝试用DirectXTK的DDSTextureLoader加载DDS纹理到立方体时碰到了链接错误,这个LNK2019找不到__imp__CreateFileW@28的问题其实挺常见的,我给你几个针对性的解决步骤:
1. 确认项目字符集设置
CreateFileW是Windows API的宽字符版本,你的项目必须配置为使用Unicode字符集才能正确识别它:
- 右键你的项目 → 属性 → 常规 → 字符集,选择“使用Unicode字符集”(别选“多字节字符集”)。
2. 检查链接器依赖库
这个错误本质是缺少了包含CreateFileW的库,或是没正确链接DirectXTK的库:
- 确保
kernel32.lib被链接:CreateFileW属于kernel32.lib,VS的默认项目设置里通常会自动包含$(CoreLibraryDependencies)(其中就包含kernel32.lib),但如果你的项目被修改过,可以手动添加:右键项目 → 属性 → 链接器 → 输入 → 附加依赖项,加上kernel32.lib。 - 确认DirectXTK库已正确链接:如果你是通过NuGet安装的DirectXTK,正常情况下NuGet会自动配置链接器依赖(Debug模式对应
DirectXTKd.lib,Release模式对应DirectXTK.lib)。如果没自动配置,你可以手动把对应模式的库添加到附加依赖项里。
3. 顺便纠正路径小问题
虽然这和当前的链接错误无关,但你的路径写法有两个小问题,提前修改避免后续运行时出错:
- 反斜杠在字符串里是转义字符,所以应该写成
L"..\\Assets\\rocks.DDS"(注意双反斜杠)。 - 你拼写错了
Assets(写成了Assests),这个也得修正,不然运行时会找不到文件。
最后,按照你的调用代码,确保m_deviceResources->GetD3DDevice()返回的是有效的ID3D11Device*指针,这也是加载纹理的前提。
内容的提问来源于stack exchange,提问作者Florisve
相关产品推荐
相关产品推荐

