☰
如何在Madeira中获取并部署微软VCRuntime:官方指南完整解读
2026/9/30 15:05:10 网站建设 项目流程

如何在Madeira中获取并部署微软VCRuntime:官方指南完整解读

【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu + Wine + DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/Madeira

Madeira 是一个让x86-64 Windows PC 游戏在非越狱 iPhone 上运行的开源项目,它把 Wine(ARM64EC)、FEX-Emu 的 x86-64→ARM64 指令翻译和 DXMT 的 D3D11→Metal 转换整合为单个 Mach 进程。但有一个关键文件不会随仓库提供:微软的Visual C++ 运行时(VCRuntime)DLL。本文完整解读官方指南 tools/fetch-vcruntime.md,带你快速获取并正确部署这 12 个运行时文件。🎮

为什么 VCRuntime 不在仓库里?

这是许可问题,不是遗漏:

  • 用 MSVC 编译的游戏依赖微软的 Visual C++ 运行时 DLL
  • 这些 DLL 是微软授权二进制,只能按微软再分发条款、且保持原样(unmodified)分发
  • 它们不受本仓库 GPL-3.0 许可证覆盖,因此已被从仓库历史中彻底移除

THIRD-PARTY-NOTICES.md 中明确写道:app/Madeira/x86_64-vcruntime/*.dll已被 gitignore,必须自行本地提供。早期仓库里曾提交的 12 个副本因签名被截断(属于"已修改"的微软二进制)也被全部清除。

⚠️ 简单说:仓库不给你、也不该给你这些文件——你自己去微软官方渠道拿,一个字节都不要改。

一键获取:12 个必备 DLL 清单

运行时目录 app/Madeira/x86_64-vcruntime/ 期望恰好 12 个文件:

文件名文件名文件名
concrt140.dllmsvcp140_codecvt_ids.dllvcruntime140.dll
msvcp140.dllvcamp140.dllvcruntime140_1.dll
msvcp140_1.dllvccorlib140.dllvcruntime140_threads.dll
msvcp140_2.dllvcomp140.dllmsvcp140_atomic_wait.dll

最快获取方法:从官方安装包提取

  1. 从微软官方渠道下载 x64 再分发安装包VC_redist.x64.exe(Visual C++ Redistributable 2015-2022)
  2. 它是自解压包,用 7-Zip 解开即可拿到 DLL。macOS 下两条命令搞定:
brew install sevenzip 7zz x VC_redist.x64.exe -o/tmp/vcredist 7zz x /tmp/vcredist/.rsrc/1033/CABINET/*.cab -oapp/Madeira/x86_64-vcruntime
  1. 不同版本的安装包内部目录结构略有差异,目标只是拿到上面 12 个文件,且必须与微软发布的字节级一致(byte-for-byte)。

💡另一种方法:docs/BUILDING.md 还提到,也可以直接从一台正版 Windows 系统的C:\Windows\System32目录复制这 12 个 DLL 过来。

部署步骤:放入正确目录

  1. 在仓库根目录确认文件夹存在(不存在就新建):app/Madeira/x86_64-vcruntime/
  2. 把 12 个 DLL 原封不动放入该目录
  3. 该目录已在 Xcode 工程中注册为 Bundle 资源,构建时会打包进 App:
  • 工程配置见 app/Madeira.xcodeproj/project.pbxproj(x86_64-vcruntime in Resources)
  • 重新用xcodebuild构建并侧载安装即可,游戏存档前缀在重装后保留

红线:不要修改这些文件

微软的再分发授权只覆盖未修改的文件。特别注意:不要剥离 Authenticode 签名——签名被截断的 DLL 就不再是"原样的微软二进制"了。

官方指南提供了一段 Python 校验脚本,检查每个 DLL 是否仍带有签名负载,输出示例:

signed app/Madeira/x86_64-vcruntime/concrt140.dll signed app/Madeira/x86_64-vcruntime/msvcp140.dll

出现UNSIGNED就说明文件被动过手脚,需要重新从官方安装包提取。

原理速览:Madeira 如何加载这些运行时

部署完成后你无需任何配置——启动游戏时,WineProcessBridge.m 会自动把这 12 个微软 DLL覆盖(overlay)到 Wine 的 ARM64EC 内置桩之上,让 x86_64 游戏经 FEX 加载微软的真实实现。这与 Proton/Winlator 的做法一致:避免游戏用到完整 C++ 运行时功能(如parallel_for、atomic_wait、<filesystem>)时撞上 Wine 的__wine_unimplemented桩。

🔍 一个有趣的细节:vcruntime140.dll和msvcp140.dll是刻意跳过的例外——它们的异常处理路径(SEH)若经 FEX 桥接会破坏 x86 栈指针,所以这两个保持使用 ARM64EC 原生内置版本,其余 10 个则用微软原版覆盖。

常见问题排查

症状可能原因与解决
游戏启动即崩溃、提示缺少 vcruntime140确认 12 个 DLL 已全部放入x86_64-vcruntime/并重新构建安装
菜单卡死 / 无闪屏DLL 版本过旧或损坏,重新用官方VC_redist.x64.exe提取
构建提示缺文件该目录被 gitignore,克隆仓库后必须手动补齐,见 docs/BUILDING.md 的"Inputs that are not in the repository"

总结

  • ✅ 从微软官方下载VC_redist.x64.exe,7-Zip 两行命令提取
  • ✅ 12 个 DLL 原样放入 app/Madeira/x86_64-vcruntime/,不修改、不去签名
  • ✅ 重新构建安装,Madeira 会在启动游戏时自动完成运行时覆盖
  • 📖 更多许可细节见 THIRD-PARTY-NOTICES.md,完整构建流程见 docs/BUILDING.md

完成这一步,你的 iPhone 距离跑起 Thumper 和 ULTRAKILL 又近了一大步。🚀

【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu + Wine + DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/Madeira

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询