无法打开包含文件:' ntddk.h'

时间:2016-03-03 16:39:13

标签: c++ visual-studio-2015 driver wdk

我一直试图进入驾驶员发展阶段(排队等待#34;不要这样做") 我一直在查看this msdn page,在安装WDK (Windows Driver Kit) 10后,我仍然无法编译他们在该页面上使用的示例。

我查看了其他SO questions但我无法找到WDK的已安装目录。当我尝试运行设置时,我受到了这样的欢迎: WDK Setup image

我该如何解决这个问题?

6 个答案:

答案 0 :(得分:8)

您需要将WDK标头路径添加到vcxproj包含目录:
vcxproj属性 - > C / C ++ - >一般 - >其他包含目录

C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\km\

P.S。:确保将SDK 10与WDK 10一起安装。
P.P.S:如果没有SDK,您将收到Cannot open include file: 'ntdef.h'错误

答案 1 :(得分:2)

经验法则

当您需要使用最新(或特定)版本的WDK构建时,请检查是否已安装相应版本的Win SDK。

怀疑原因

在调试问题的过程中,似乎(因为SDK版本)构建过程将$(LatestTargetPlatformVersion)设置为10.0.10586。虽然安装的WDK仅为10.0.14393版本提供了所需版本的构建文件。看起来这是一种有些预期的行为。

我的案例

在我的情况下,这是由于不同版本的Win SDK和WDK 。 我有SDK 10.0.10586和WDK 10.0.14393。 安装SDK 10.0.14393为我解决了这个问题。

旁注

使用VS2015的默认布局安装Win SDK,但由于某些原因,它在VS更新过程中无法获得更新。

答案 2 :(得分:1)

可以添加一个宏$(DDK_INC_PATH)来包含项目的目录(vcxproj属性-> VC ++目录->包含目录)

答案 3 :(得分:1)

通过在Visual Studio中的“项目属性”->“常规”下选择其他“ Windows SDK版本”来解决该问题。

在目录C:\Program Files (x86)\Windows Kits\10\Include中,我有5个Windows SDK文件夹。最新的(10.0.17763.0)没有km子文件夹。在Visual Studio中将Windows SDK版本从10.0.17763.0更改为10.0.17134.0之后,找到了ntddk.h标头。

答案 4 :(得分:1)

我也面临类似的问题。下面为我​​工作:

步骤1 :了解要为其开发驱动程序的目标Windows平台。您可以通过查看设置->系统->关于-> Windows规范

在系统上检查“ Windows版本”

Windows Specification

第2步:确保安装了与目标Windows平台版本匹配的兼容“ Windows SDK”和“ WinSDK”。

第3步:验证$(DDK_INC_PATH)中是否存在“ ntddk.h”。该预处理器宏通常计算为“ C:\ Program Files(x86)\ Windows Kits \ 10 \ Include \\ km”。如果看不到“ km”文件夹,请仔细按照上面第2步中提到的链接进行操作。

"km" folder availability

步骤4 :验证项目属性->配置属性->常规->平台工具集正在使用“ WindowsKernelModeDriver”。

Platform Toolset

答案 5 :(得分:0)

如果您尝试在新系统上构建,则可能首先尝试将解决方案重新定位到该系统上

enter image description here

如果这不起作用,则查找上面某些解释中提到的子文件夹KM,然后尝试通过更改$(LatestTargetPlatformVersion)来重定向到该版本

enter image description here

希望您应该能够使用ntddk.h文件进行构建 注意!请记住,这将迫使您的解决方案构建到该特定平台,如果您尝试在另一个平台上构建,则必须再次手动更改它。更好的解决方案是进行某种预构建步骤,以解决缺少的SDK并安装它的问题,但是我没有这样的解决方案-任何一个?