无法打开包含文件:'VersionHelpers.h':没有这样的文件或目录。

10

我试图使用在VersionHelpers.h头文件中声明的IsWindows7SP1OrGreater函数。但是我得到了以下错误:

'VersionHelpers.h':没有这样的文件或目录

尽管我可以从Visual Studio打开此头文件,也可以被语法检查器正确地找到。问题出在哪里?


你是否偶然使用了include "VersionHelpers.h"而不是include <VersionHelpers.h> - benjymous
@benjymous:不,我正在使用尖括号。 - Violet Giraffe
你的目标是哪个版本的VS,使用哪个工具集? - David Heffernan
这是唯一一个你无法打开的头文件吗?同样在源代码中成功使用 #include 的其他头文件是否在同一目录下?然后你可以尝试完全重新编写 include 行,可能是名称中有无效(非 ANSI)字符。 - harper
@DavidHeffernan:VS 2013 工具集。 - Violet Giraffe
@harper:那是个好主意,但不是那个。 - Violet Giraffe
3个回答

9
为了使用版本帮助器宏,您需要针对此版本使用VS 2013附带的v120平台工具集。如果在VS 2013中创建一个空项目,则会发现包含VersionHelpers.h可以正常工作。
如果您的目标是v120,则我猜您的项目中可能有其他配置错误。从一个全新的项目开始,确保#include <VersionHelpers.h>按预期工作。然后尝试找出您的问题项目与正常的香草项目之间的区别。

是的,你说得对。我的包含 VersionHelpers 的头文件被另一个使用 v100 工具集的项目所包含。不过为什么 MSDN 没有提到这个问题呢?它甚至说 VersionHelpers 中的函数从 Windows 2000 开始就可用。 - Violet Giraffe
据我所知,这些宏是建立在支持Win2k的VerifyVersionInfo之上的。因此,这些宏继承了它的特性。这些宏非常简单。对于您的v100工具,如果您需要继续使用它,您可以将该包含文件添加到该项目中。 - David Heffernan

5
我自己也遇到过这个问题,但在我的硬盘上找不到该文件。
后来我才发现此文件似乎仅包含在Windows 8.1 SDK(以及未来的SDK)中,在C:\Program Files (x86)\Windows Kits\8.1\Include\um路径下。文档没有提到这一点(因此您无需使用Visual Studio 2013即可使用它)。

4

没错... VersionHelpers.h 包含在 VS2013 Windows 8.1 SDK 中。

对于使用 VS2012 的人,您需要重新下载 Win 8.1 SDK 并安装它。导航到 Program Files(x86)\Windows Kits\8.1\Include\um。复制所有文件并粘贴到 8.0\Include\um 中。最好跳过所有现有文件。重新加载 VS。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接