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 的过程入口点