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

VS2019环境下如何通过CMake找到ntddk.h头文件?

解决VS2019 + CMake 找不到ntddk.h的问题

作为刚接触VS驱动开发的新手,你遇到的核心问题其实很常见:ntddk.h并不是普通Windows SDK的组成部分,它属于Windows Driver Kit (WDK)——这是很多刚入门驱动开发的开发者容易忽略的关键细节。下面一步步帮你排查和解决:

1. 确认已安装匹配版本的WDK

你使用的Windows SDK版本是10.0.19041.0,因此必须安装同版本的WDK(10.0.19041.0),且要确保WDK与VS2019正确关联:

  • 打开VS Installer,点击「修改」,在「单个组件」中找到并勾选「Windows Driver Kit 10.0.19041.0」以及对应的「驱动开发工具」扩展;
  • 如果已经安装过WDK,检查默认安装目录C:\Program Files (x86)\Windows Kits\10下是否存在Include\10.0.19041.0\km文件夹,ntddk.h就存放在这个km目录里。

2. 修正CMakeLists.txt配置

CMake对驱动项目的支持需要启用WDK模块,以下是适配你场景的完整示例配置,你可以对照调整:

cmake_minimum_required(VERSION 3.18)
project(DriverFilterDemo LANGUAGES C)

# 指定目标平台版本,与你的SDK/WDK版本保持一致
set(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION 10.0.19041.0)

# 查找并引入WDK
find_package(WDK REQUIRED)

# 创建驱动项目(add_wdk_driver是CMake 3.18+支持的WDK专用命令)
add_wdk_driver(DriverFilterDemo
    SOURCES
        your_driver_source.c  # 替换成你的驱动源文件
)

# 链接驱动必要的库(wdm是过滤驱动常用的库)
target_link_libraries(DriverFilterDemo PRIVATE wdm)

如果你的CMake版本低于3.18(不推荐,VS2019 16.10.4自带的CMake版本已满足要求),可以手动指定WDK路径替代自动查找:

# 手动指定WDK包含目录(替换成你实际的WDK路径)
include_directories(
    "C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/km"
    "C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/shared"
)

# 手动指定WDK库目录(根据你的目标架构调整x64/x86)
link_directories("C:/Program Files (x86)/Windows Kits/10/Lib/10.0.19041.0/km/x64")

3. 清理CMake缓存并重新生成

CMake的缓存可能会保留旧的配置信息,导致新的WDK路径不生效:

  • 删除你的build目录(如果是VS生成的项目,找到解决方案文件夹下的build文件夹);
  • 重新运行CMake生成项目,再打开VS尝试编译。

4. 手动验证VS项目属性(可选)

如果问题仍存在,可以检查VS项目的包含目录配置:

  • 右键项目 → 属性 → VC++目录 → 包含目录;
  • 确认里面包含了C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\km和shared目录,若没有则手动添加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 03:43:12