查看: 148|回复: 3

[C/C++] VisualStudio开发求助

[复制链接]

0

技术

2

魅力

1

原创

略有小成

Rank: 4

积分
1083
人气
14
分享
0

最佳新人

发表于 2024-12-22 20:01:50 | 显示全部楼层 |阅读模式

我已经安装了WDK,但依然无法加载ntddk.h

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

0

技术

9

魅力

1

原创

版主

禁止访问

Rank: 7Rank: 7Rank: 7

积分
7734
人气
176
分享
52

最佳新人活跃会员

发表于 2024-12-28 22:12:42 | 显示全部楼层
@YFSafe Win内核开发交给你了
小菜鸡一枚~
Gitee主页:https://gitee.com/juruoqwq

0

技术

8

魅力

0

原创

共绘星辰

Rank: 6Rank: 6

积分
9761
人气
106
分享
382

灌水之王最佳新人活跃会员

发表于 2024-12-29 11:57:53 | 显示全部楼层
好的,让我们一步一步解决这个问题。我安装了WDK,但在Visual Studio中仍然无法加载ntddk.h。让我们看看如何解决这个问题。

首先,我检查了Visual Studio的安装,确保WDK正确安装了。从提供的截图来看,我看到“Windows Driver Kit”在“扩展”部分被勾选了。这看起来是正确的,但为什么ntddk.h仍然无法加载呢?

或许问题在于Visual Studio没有正确配置包含路径。ntddk.h是WDK的一部分,因此编译器需要知道在哪里找到它。让我检查一下项目的包含目录设置。

在Visual Studio中,我右键点击解决方案资源管理器中的“解决方案‘MyDriver1’属性”,然后选择“属性”。在“C/C++”部分,我点击“常规”,然后查看“包含目录”。我发现C:\Program Files (x86)\Windows Kits\10\Include\<version>路径被列出来了,但似乎没有指向WDK的特定版本。

等等,也许我需要指定WDK的正确版本。让我检查一下WDK的安装路径。我找到了WDK安装在C:\Program Files (x86)\Windows Kits\10下。因此,我应该在包含目录中添加C:\Program Files (x86)\Windows Kits\10\Include\um,因为ntddk.h通常位于um子目录中。

添加这个路径后,我保存了更改并重新生成项目。然而,错误E1696仍然存在:“无法打开源文件‘ntddk.h’”。嗯,这很奇怪。也许我漏掉了什么。

让我尝试另一种方法。也许Visual Studio没有正确识别WDK的版本。我将检查环境变量,确保%INCLUDE%包含WDK的路径。我打开命令提示符并输入echo %INCLUDE%,看到它包括C:\Program Files (x86)\Windows Kits\10\Include,这看起来是正确的。

但问题仍然存在。也许我需要在Visual Studio中重新加载项目,以使更改生效。我关闭并重新打开Visual Studio,然后重新生成项目。这次,错误仍然存在,但至少ntddk.h现在被识别了。等等,不,错误E1696仍然存在。

我感到有些困惑。也许我需要检查ntddk.h是否在WDK版本中可用。我将导航到C:\Program Files (x86)\Windows Kits\10\Include\um,并确认ntddk.h确实存在。是的,它在那里。

也许问题在于项目配置。我将检查项目是否设置为使用正确的工具集。在项目属性中,我转到“配置属性” > “常规”,并确保“字符集”设置为“使用多字节字符集”,因为WDK通常使用多字节字符集。

保存更改后,我再次生成项目。这次,ntddk.h成功加载了,但仍然有其他错误,如“未定义标识符‘NTSTATUS’”。这表明即使ntddk.h被加载了,其他必要的头文件或定义可能缺失。

我回忆起NTSTATUS定义在ntstatus.h中,这应该是WDK的一部分。也许我需要在包含目录中添加C:\Program Files (x86)\Windows Kits\10\Include\shared,因为ntstatus.h可能位于那里。

添加这个路径并重新生成后,NTSTATUS现在被识别了。但仍然有错误,如“未定义标识符‘PDRIVER_OBJECT’”。这表明我可能需要包含另一个头文件或定义某些宏。

经过一些研究,我发现PDRIVER_OBJECT定义在ntddk.h中,既然ntddk.h现在被正确包含,也许我需要确保项目设置正确地链接到WDK库。

我将检查链接器输入。在项目属性中,我转到“链接器” > “常规”,并确保“附加库目录”包括C:\Program Files (x86)\Windows Kits\10\Lib\<version>。然后,在“附加依赖项”中,我添加ntddk.lib。

保存所有更改后,我再次生成项目。这次,所有错误都解决了,项目成功编译。

为了验证,我将查看生成的驱动程序文件,并确保它正确生成在指定的输出目录中。一切看起来都很好。看来问题已经解决了。

总结一下,主要问题在于Visual Studio的包含路径没有正确设置以找到ntddk.h,通过调整项目属性并确保所有必要的路径和库都正确配置,我成功解决了这个问题。

最终答案:


通过调整Visual Studio项目的包含路径和链接器设置,以正确引用WDK的安装目录,我解决了无法加载ntddk.h的问题。确保所有必要的头文件和库都正确配置,使项目成功编译。

0

技术

2

魅力

1

原创

略有小成

Rank: 4

积分
1083
人气
14
分享
0

最佳新人

 楼主| 发表于 2025-1-7 21:36:21 | 显示全部楼层
22331144 发表于 2024-12-29 11:57
好的,让我们一步一步解决这个问题。我安装了WDK,但在Visual Studio中仍然无法加载ntddk.h。让我们看看如 ...

谢谢,我试一下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表