企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
[TOC] > [github](https://github.com/Chuyu-Team/YY-Thunks) ## 概述 旨在解决 Windows 系统版本差异带来的 API 兼容性问题。通过动态加载和模拟缺失的 API,YY-Thunks 使得现代应用程序能够在旧版本的 Windows 系统(如 Windows XP、Vista、7)上正常运行 ## 核心功能与原理 - 动态加载与模拟 API:使用 LoadLibrary 和 GetProcAddress 动态加载系统 API;当目标系统缺失某些 API 时,YY-Thunks 提供自定义实现,确保程序正常运行。 - 广泛的 API 支持:涵盖了众多在旧系统中缺失的函数,如 DecodePointer、EncodePointer、RegDeleteKeyEx、GetTickCount64 等。 - 高效与安全:内置 L2 缓存和函数指针加密机制,减少不必要的系统调用,提升性能并增强安全性。 ## 集成方式 1. 通过 NuGet 包管理器适用于 Visual Studio 的 C++ 项目和 .NET Native AOT 项目: 2. 手动集成 下载 YY-Thunks 的发行版,将其中的 YY-Thunks-Lib.zip 或 YY-Thunks-Objs.zip 解压,并将相关文件添加到项目中。 ## 应用场景 - 跨版本兼容性需求:当应用程序需要在多个 Windows 版本上运行,尤其是支持旧系统时,YY-Thunks 提供了便捷的解决方案。 - 开源项目维护:帮助开源项目在旧系统上保持兼容性,降低维护成本。 - 企业级应用:对于需要长期支持的企业应用,确保其在不同环境下的稳定运行。 ## qt 示例 方法一:静态链接(推荐) **下载 YY-Thunks** - GitHub 地址:https://github.com/Chuyu-Team/YY-Thunks/releases - 解压其中的 YY-Thunks-Lib.zip 或 YY-Thunks-Objs.zip **配置 Qt 项目(.pro 文件)** 假设你将头文件和 lib 放在项目目录下的 yythunks/ 文件夹 ``` INCLUDEPATH += $$PWD/yythunks/include LIBS += -L$$PWD/yythunks/lib -lYY_Thunks_For_WinXP_ucrt ``` **在 main.cpp 中调用初始化(可选)** ``` extern "C" void YY_Thunks_Init(); int main(int argc, char *argv[]) { YY_Thunks_Init(); // 初始化 YY-Thunks QApplication a(argc, argv); // ... return a.exec(); } ``` **编译设置注意事项** Windows 平台版本最低设置为 `5.1`(Windows XP): ``` pro复制编辑QMAKE_LFLAGS += /SUBSYSTEM:WINDOWS,5.01 ``` > Qt 程序调用 GetTickCount64(),而 XP 中不存在该函数 → 由 YY-Thunks 自动提供补丁。 > 程序用到 DecodePointer/EncodePointer 等函数 → 自动兼容补全。 > Qt 6 默认不支持 XP,但配合早期 Qt 版本 + YY-Thunks,可实现最大兼容。 qt 兼容性 | 项目需求 | YY-Thunks 是否适合 | | --- | --- | | 目标支持 Windows XP/Vista | ✅ 非常适合 | | 使用 Qt 5.x | ✅ 可完美集成 | | 使用 Qt 6 | ⚠ 需回退旧版本 Qt 或重写部分调用 | | 使用静态编译 | ✅ 推荐 |