You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 10下CMake集成DirectX 11(Direct3D)配置问题求助

Windows 10下CMake集成DirectX 11的问题解决

核心问题定位

你遇到的找不到.lib的错误,本质是**d3dx11.lib并不在Windows 10 SDK中**:

  • Windows 10 SDK只包含Direct3D的核心运行时库(比如d3d11.lib),而D3DX系列工具库(包括d3dx11.lib)属于旧版DirectX SDK的内容,微软从Windows 10 SDK开始就不再捆绑这些库了。
  • 你手动指定的路径是Windows 10 SDK的目录,里面本来就没有d3dx11.lib,所以即使配置了路径也找不到。

另外,硬编码SDK版本号(10.0.17763.0)的做法不够灵活,会导致配置在其他SDK版本的机器上失效。

解决方案

方案一:替换D3DX11为官方推荐的DirectX Tool Kit(优先选择)

微软已经废弃了D3DX系列,推荐使用DirectX Tool Kit替代,它是开源的,完全兼容CMake,不需要安装旧版SDK:

  1. 在CMakeLists.txt中添加以下配置来引入DirectX Tool Kit:
cmake_minimum_required(VERSION 3.12)

add_executable(DirectX11_CMake_Example 
    "DirectX11_CMake_Example.cpp" 
    "DirectX11_CMake_Example.h"
)

# 启用UNICODE
target_compile_definitions(DirectX11_CMake_Example PRIVATE UNICODE _UNICODE)

# 链接核心Direct3D 11库(CMake会自动从Windows SDK找到d3d11.lib)
target_link_libraries(DirectX11_CMake_Example PRIVATE d3d11.lib)

# 引入DirectX Tool Kit替代D3DX11
include(FetchContent)
FetchContent_Declare(
    DirectXTK
    GIT_REPOSITORY https://github.com/microsoft/DirectXTK.git
    GIT_TAG main
)
FetchContent_MakeAvailable(DirectXTK)
target_link_libraries(DirectX11_CMake_Example PRIVATE DirectXTK)
  1. 替换代码中D3DX11的调用为DirectX Tool Kit的API即可。

方案二:安装旧版DirectX SDK(仅当必须保留D3DX11代码时)

如果你一定要继续使用D3DX11,需要安装旧版DirectX SDK(June 2010版本),并调整CMake配置:

cmake_minimum_required(VERSION 3.12)

add_executable(DirectX11_CMake_Example 
    "DirectX11_CMake_Example.cpp" 
    "DirectX11_CMake__Example.h"
)

target_compile_definitions(DirectX11_CMake_Example PRIVATE UNICODE _UNICODE)

# 先引入Windows 10 SDK(避免和旧SDK的头文件冲突)
include_directories(SYSTEM "${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}/um")
link_directories("${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}/um/${CMAKE_VS_PLATFORM_NAME}")

# 再引入旧版DirectX SDK的路径
include_directories(SYSTEM BEFORE "C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Include")
link_directories("C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/${CMAKE_VS_PLATFORM_NAME}")

# 链接核心库和D3DX11
target_link_libraries(DirectX11_CMake_Example PRIVATE d3d11.lib d3dx11.lib)

注意:旧SDK和Windows 10 SDK存在头文件冲突,必须用BEFORE确保Windows 10 SDK的头文件先被包含。

额外验证建议

运行CMake时,查看输出的Include directory和Link directory,确认:

  • Windows SDK的路径被正确识别
  • 旧版DirectX SDK的路径(如果使用的话)在Windows SDK路径之后

内容的提问来源于stack exchange,提问作者rbaleksandar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 16:35:26