如何根据Windows版本调用不同的Win API?

发布于 2024-08-17 18:49:13 字数 274 浏览 6 评论 0原文

具体问题是,Windows上对条件变量的支持是从Vista开始的,对于早期版本的Windows(Windows XP),我有一个模拟的条件变量代码解决了这个问题。但是,我希望能够在系统支持时调用本机条件变量 API,并仅在 XP 和更早版本上回退到我的版本。我尝试使用 GetVersionInfo API 检测 Windows 版本,但它仍然在启动时间上给我错误(找不到 InitializeConditionVariable 之类的 API 条目)。

我对Windows编程不熟悉,请问如何很好地解决温柔回退问题?

The specific problem is, the support of condition variable on Windows begins from Vista, for early version of Windows (Windows XP), I have a emulated condition variable code sort of solved the problem. However, I'd like to have the ability to call native condition variable API when the system supported and fallback to my version only on XP and earlier version. I tried to detect windows version with GetVersionInfo API, but it still gives me error on start time (cannot find API entry of InitializeConditionVariable sort of).

I am not familiar with Windows programming, how do you solve the gentle fallback problem nicely?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鲜血染红嫁衣 2024-08-24 18:49:13

如果你想调用一个可能存在也可能不存在的函数,具体取决于平台版本,那么使用动态加载

LoadLibrary 和 GetProcAddress

这些将告诉你入口点是否存在,然后让你调用它(如果存在)

if you want to call a function that may or may not exist depending on platform version then use dynamic loading

LoadLibrary and GetProcAddress

These will tell you if the entry point exists and then let you call it if it does

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文