使用Windows SDK 10.0.20348构建内核驱动:找不到ntoskrnl.lib?
问题描述
尝试使用Windows SDK 10.0.20348构建Windows内核驱动时,编译链接阶段报错无法找到指定路径的ntoskrnl.lib,错误信息如下:
fatal error LNK1181: cannot open input file 'C:\Program Files (x86)\Windows Kits\10\lib\10.0.20348.0\km\x64\ntoskrnl.lib'
对比Windows SDK 10.0.19041版本,该库存在于多个架构的内核模式库目录下,查找结果如下:
$ find /cygdrive/c/Program\ Files\ \(x86\)/ -iname ntoskrnl.lib -ls 281474977350513 836 -rwxr-x--- 1 SYSTEM SYSTEM 852788 Dec 1 2020 /cygdrive/c/Program\ Files\ (x86)/Windows\ Kits/10/Lib/10.0.19041.0/km/arm/ntoskrnl.lib 281474977350489 768 -rwxr-x--- 1 SYSTEM SYSTEM 783006 Dec 1 2020 /cygdrive/c/Program\ Files\ (x86)/Windows\ Kits/10/Lib/10.0.19041.0/km/arm64/ntoskrnl.lib 281474977347929 820 -rwxr-x--- 1 SYSTEM SYSTEM 839508 Dec 2 2020 /cygdrive/c/Program\ Files\ (x86)/Windows\ Kits/10/Lib/10.0.19041.0/km/x64/ntoskrnl.lib 281474977348046 872 -rwxr-x--- 1 SYSTEM SYSTEM 892218 Dec 2 2020 /cygdrive/c/Program\ Files\ (x86)/Windows\ Kits/10/Lib/10.0.19041.0/km/x86/ntoskrnl.lib 281474977349408 668 -rwxr-x--- 1 SYSTEM SYSTEM 682044 Nov 2 2020 /cygdrive/c/Program\ Files\ (x86)/Windows\ Kits/10/Lib/win7/km/x64/ntoskrnl.lib 281474977349328 704 -rwxr-x--- 1 SYSTEM SYSTEM 719922 Jun 23 2020 /cygdrive/c/Program\ Files\ (x86)/Windows\ Kits/10/Lib/win7/km/x86/ntoskrnl.lib 281474977349511 712 -rwxr-x--- 1 SYSTEM SYSTEM 728936 Jun 20 2020 /cygdrive/c/Program\ Files\ (x86)/Windows\ Kits/10/Lib/win8/km/arm/ntoskrnl.lib 281474977349615 644 -rwxr-x--- 1 SYSTEM SYSTEM 655438 Nov 2 2020 /cygdrive/c/Program\ Files\ (x86)/Windows\ Kits/10/Lib/win8/km/x64/ntoskrnl.lib 281474977349633 672 -rwxr-x--- 1 SYSTEM SYSTEM 687918 Jun 23 2020 /cygdrive/c/Program\ Files\ (x86)/Windows\ Kits/10/Lib/win8/km/x86/ntoskrnl.lib 281474977349751 732 -rwxr-x--- 1 SYSTEM SYSTEM 746102 Jun 20 2020 /cygdrive/c/Program\ Files\ (x86)/Windows\ Kits/10/Lib/winv6.3/km/arm/ntoskrnl.lib 281474977349955 664 -rwxr-x--- 1 SYSTEM SYSTEM 679632 Nov 2 2020 /cygdrive/c/Program\ Files\ (x86)/Windows\ Kits/10/Lib/winv6.3/km/x64/ntoskrnl.lib 281474977349835 736 -rwxr-x--- 1 SYSTEM SYSTEM 752656 Dec 2 2020 /cygdrive/c/Program\ Files\ (x86)/Windows\ Kits/10/Lib/winv6.3/km/x86/ntoskrnl.lib
请问是10.0.20348版本不再支持ntoskrnl.lib,还是遗漏了某些配置?
解决方案
10.0.20348版本并未移除ntoskrnl.lib,问题出在内核驱动开发所需的库并未包含在基础Windows SDK中,需要单独安装对应版本的Windows Driver Kit(WDK)。
具体排查步骤:
- 检查WDK安装状态:打开Visual Studio Installer,查看已安装的工作负载中是否包含"Windows Driver Kit - Windows 10.0.20348.0";若未安装,补充勾选该组件并完成安装,也可以通过独立的WDK安装包进行安装。
- 验证库路径配置:安装完成后,打开驱动项目的属性设置,进入
链接器 -> 常规 -> 附加库目录,确认是否添加了路径C:\Program Files (x86)\Windows Kits\10\Lib\10.0.20348.0\km\x64(根据你的目标架构调整x64为对应平台)。 - 确认环境变量:检查系统环境变量
LIB是否包含上述库目录,若未包含,手动添加后重启Visual Studio。
之前的10.0.19041版本可能是因为你同时安装了SDK和对应WDK组件,所以能找到该库;而10.0.20348仅安装了基础SDK,缺少内核驱动开发的必要库文件。
内容的提问来源于stack exchange,提问作者Roland Mainz
相关产品推荐
相关产品推荐

