使用 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.lib
和Ntdll.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.lib
和ntdll.lib
导出的函数。只要链接器可以找到那些 LIB 文件,一切都会按预期工作。
但是请注意,很少需要确定 Windows 的实际版本。相反,您应该检查是否支持您需要的功能。如果您要调用可能不可用的 API 函数(例如,仅在 Windows 10 上支持的函数,而您仍需要支持旧版本),则应通过组合 dynamically call that function 或 GetModuleHandle
或 @987654330 @ 和 GetProcAddress
。 (如果你调用LoadLibrary
,你也必须在完成后调用FreeLibrary
。)
【讨论】:
以上是关于使用 gcc c++ 获取 Windows 版本的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 上使用 Rtools 中包含的不同 gcc 版本和 Rcpp
MinGW:如何在 Windows 上将 GCC/G++ 升级到版本 5?