Windows:如何解决缺少的过程入口点以实现向后兼容性? [复制]

Posted

技术标签:

【中文标题】Windows:如何解决缺少的过程入口点以实现向后兼容性? [复制]【英文标题】:Windows: How to get around missing procedure entry point for backward compatiblity? [duplicate] 【发布时间】:2019-03-12 12:52:05 【问题描述】:

例如调用这个:

auto res = GetThreadDpiAwarenessContext();

https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-getthreaddpiawarenesscontext

在较旧的 Windows(例如 win 8)上运行时,会出现“无法在 user32.dll 中找到过程入口点”的错误。这似乎发生在 .exe 完成静态 .dll 加载时(因此在运行任何实际用户代码之前)。

虽然这并不奇怪,因为它已明确记录在 Windows 10 中可用,有没有办法使应用程序向后兼容?

【问题讨论】:

有一个process version。不确定 Windows 10 之前是否有线程版本。 运行时使用GetProcAddress获取函数的地址 【参考方案1】:

在运行时动态加载函数,或者使用您的 链接器的延迟加载功能,或直接使用GetProcAddress() 在您的代码中(链接器的延迟加载程序使用 GetProcAddress() 内部为您服务)。

Original answer from Remy LeBeau

【讨论】:

帖子被骗关闭了。所需要的只是对目标的答案进行投票 @NathanOliver:我真的应该阅读那些 SO 错误消息。 :|

以上是关于Windows:如何解决缺少的过程入口点以实现向后兼容性? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 C++Builder 应用程序运行期间缺少 VariantInit 的过程入口点

“场景由于缺少入口点而无法访问并且没有...” - 解决此警告

由于缺少入口点,场景无法访问.. 没有运行时访问的标识符?

QT 部署不起作用缺少入口点

如何解决缺少OCX问题,如何在win7 64位下注册OCX

如何解决缺少OCX问题,如何在win7 64位下注册OCX