使用 gcc c++ 获取 Windows 版本

Getting Windows version with gcc c++

我确定这个问题有点奇怪,但我使用的是 Code::Blocks 和 GCC。 要在我的项目中使用某些特定功能,我需要确定用户计算机中安装的 Windows 版本。

通过 VS2013/15 我们可以使用 VersionHelpers.h 和 IsWindowsXXXOrGreater()。但是 GCC C++ 呢?

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

如果尚未安装,您可以 download the Windows SDK from Microsoft 并将其安装在您的开发计算机上。安装后,您需要告诉 Code::Blocks 可以找到 SDK 的 header 文件和 LIB 文件的路径。

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

但是请注意,很少需要确定 Windows 的实际版本。相反,您应该检查是否支持您需要的 功能 。如果你想调用一个可能不可用的 API 函数(例如,一个函数只在 Windows 10 上支持,而你仍然需要支持旧版本),那么你应该 dynamically call that function 通过组合 GetModuleHandleLoadLibraryGetProcAddress。 (如果调用LoadLibrary,完成后还必须调用FreeLibrary。)