使用gcc c++获取Windows版本

Getting Windows version with gcc c++

本文关键字:Windows 版本 获取 c++ gcc 使用      更新时间:2023-10-16

我相信这个问题有点奇怪,但我正在使用Code::Blocks和GCC。为了在我的项目中使用一些特定的功能,我需要确定用户机上安装的是哪个版本的Windows。

与VS2013/15我们可以使用versionhelper .h和IsWindowsXXXOrGreater()。但是GCC c++呢?

您仍然使用VersionHelpers.h,即使使用GCC或Clang或其他编译器。这些函数与Visual c++无关。它们是Windows SDK的一部分,所有Windows应用程序都必须使用。

您可以从Microsoft下载Windows SDK并将其安装在您的开发机器上,如果尚未安装的话。安装后,你需要告诉Code::阻塞了可以找到SDK头文件和LIB文件的路径。

VersionHelpers.h将在这些标题中(但您只需要包括Windows.h)。VersionHelpers.h文件定义了一系列内联函数,最终调用从kernel32.libntdll.lib导出的函数。只要链接器能找到这些LIB文件,一切都将按预期工作。

但是,请注意,很少需要确定Windows的实际版本。相反,您应该检查是否支持您需要的特性。如果你想调用一个可能不可用的API函数(例如,一个只支持Windows 10的函数,而你仍然需要支持旧版本),那么你应该通过将GetModuleHandleLoadLibraryGetProcAddress结合来动态地调用该函数。(如果您调用LoadLibrary,您必须在完成后也调用FreeLibrary)