使用 gcc c++ 获取 Windows 版本

Posted

技术标签:

【中文标题】使用 gcc c++ 获取 Windows 版本【英文标题】:Getting Windows version with gcc c++ 【发布时间】:2016-07-05 10:58:25 【问题描述】:

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

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

【问题讨论】:

#include Windows.h 并与Kernel32.libNtdll.lib 链接,如documentationm 中所述 【参考方案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.libntdll.lib 导出的函数。只要链接器可以找到那些 LIB 文件,一切都会按预期工作。

但是请注意,很少需要确定 Windows 的实际版本。相反,您应该检查是否支持您需要的功能。如果您要调用可能不可用的 API 函数(例如,仅在 Windows 10 上支持的函数,而您仍需要支持旧版本),则应通过组合 dynamically call that function 或 GetModuleHandle 或 @987654330 @ 和 GetProcAddress。 (如果你调用LoadLibrary,你也必须在完成后调用FreeLibrary。)

【讨论】:

以上是关于使用 gcc c++ 获取 Windows 版本的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 上使用 Rtools 中包含的不同 gcc 版本和 Rcpp

使用 gcc micros 获取版本号

MinGW:如何在 Windows 上将 GCC/G++ 升级到版本 5?

GCC 使用旧版本的 C++

C++ - 在 Windows 上使用 GCC 而不是 MSVC 值得吗? [关闭]

C++ - 获取 Windows 版本