【发布时间】:2021-03-13 09:21:29
【问题描述】:
我创建了动态库(dll),它使用来自 Windows API 的函数 GetScaleFactorForMonitor。然而这个功能是在 Windows 8.1 中引入的,这些 dll 显然不会在 Windows 7 中加载。我正在考虑在一个dll中拥有相同方法的两个版本并根据Windows版本使用的解决方案。
有没有人有什么建议。我会在我的代码中保留GetScaleFactorForMonitor。
【问题讨论】:
-
如果您使用静态链接,您的应用很可能会在 Windows 7 上显示错误消息,因为它无法找到该 API 和/或 dll。因此,您很可能必须通过检测操作系统版本来对该 API 使用动态链接,然后使用
GetProcAdddress来获取该 API 的地址。 -
@Asesh 或使用链接器的延迟加载功能(如果有)。这将在运行时为您包装 GetProcAddress() 逻辑。
-
@ase 在发现功能时不要检查操作系统版本。只需使用您选择的任何运行时动态链接方案来发现功能。