如何根据Windows版本调用不同的Win API?
具体问题是,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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果你想调用一个可能存在也可能不存在的函数,具体取决于平台版本,那么使用动态加载
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