【问题标题】:Getting Windows version with gcc c++使用 gcc c++ 获取 Windows 版本
【发布时间】:2016-07-05 10:58:25
【问题描述】:
我确定这个问题有些奇怪,但我使用的是 Code::Blocks 和 GCC。
要在我的项目中使用某些特定功能,我需要确定用户机器中安装了哪个版本的 Windows。
在 VS2013/15 中,我们可以使用 VersionHelpers.h 和 IsWindowsXXXOrGreater()。但是 GCC C++ 呢?
【问题讨论】:
标签:
c++
windows
gcc
codeblocks
【解决方案1】:
您仍然使用VersionHelpers.h,即使使用 GCC 或 Clang 或其他编译器。这些函数与 Visual C++ 无关。它们是所有 Windows 应用程序都必须使用的 Windows SDK 的一部分。
如果尚未安装,您可以download the Windows SDK from Microsoft 并将其安装在您的开发机器上。安装后,您需要告诉 Code::Blocks 可以找到 SDK 头文件和 LIB 文件的路径。
VersionHelpers.h 将在这些标头中(但您只需要包含Windows.h)。 VersionHelpers.h 文件定义了一系列内联函数,这些函数最终调用从kernel32.lib 和ntdll.lib 导出的函数。只要链接器可以找到那些 LIB 文件,一切都会按预期工作。
但是请注意,很少需要确定 Windows 的实际版本。相反,您应该检查是否支持您需要的功能。如果您要调用可能不可用的 API 函数(例如,仅在 Windows 10 上支持的函数,而您仍需要支持旧版本),则应通过组合 dynamically call that function 或 GetModuleHandle 或 @987654330 @ 和 GetProcAddress。 (如果你调用LoadLibrary,你也必须在完成后调用FreeLibrary。)