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
相关产品推荐
相关产品推荐

