【问题标题】: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++ 呢?

【问题讨论】:

  • #include Windows.h 并与Kernel32.libNtdll.lib 链接,如documentationm 中所述

标签: 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.libntdll.lib 导出的函数。只要链接器可以找到那些 LIB 文件,一切都会按预期工作。

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

【讨论】:

    猜你喜欢
    • 2020-12-19
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 2021-09-19
    • 2011-12-29
    • 2023-04-05
    • 2017-07-20
    相关资源
    最近更新 更多