
1 rrubick OP 一楼请上帖中大佬 @Yjhenan @Mithril @lujiaxing @urlpha @sujin190 @nivalxer @tangmanger @rogerhesong @chenxiansheng @loveour @linhua @guanzhangzhang @fzdfengzi |
2 lpf0309 Nov 21, 2025 建议放弃,如果好做的话,这么多软件也不会提供 arm 和 amd 版本了了 |
3 nivalxer Nov 21, 2025 看起来物理机是 arm ,走 qemu 模拟 86 在跑,所以性能很低是正常的(例如在 apple 的 m 芯片上 pd 跑 x86 的镜像也是如此)。但是程序应该是能正常运行的。提示 **不是一个有效的 Win32 应用程序**可能是.net framework 安装的问题,如果完全是模拟 x86 在跑的话,应该是可以跑的。 |
4 rrubick OP @nivalxer #3 xp 最高只支持到 .net framework 4.0, exe 实际依赖的是 4.5 。 AI 解释这个报错应该是类似程序头已经标记了 4.5 版本,即使强行修改也会报其它错。 |
5 lpf0309 Nov 21, 2025 你这活谁派给你的,我不知道这人是看得起你还是看不起你。你连源码都没有,还想换架构、换系统迁移,我经常用麒麟和 win ,有源码我都不敢保证能够迁移,你这还不如联系硬件厂商要 arm linux 驱动,然后再重写软件功能。你这硬件怎么交互得?你用虚拟机怎么保证这硬件能连到虚拟机的系统上。 |
6 aosailuolierwang Nov 21, 2025 我就是专门搞 XC 改造的,明确告诉你这个搞不了。 |
7 linhua Nov 21, 2025 放弃吧,如果和硬件交互的话,windows 和 linux 完全不一样,得改代码 |
8 Mithril Nov 21, 2025 Wine 是不行的,它只是转换 API 调用,不能转换架构。 虚拟机是可行的,只要找个能用的 Windows 就行了。你可以试试关了 PageFile 等。 但如果你那一堆 DLL 里面还有些 C++的,你找 XP 就不一定能运行了。 以你目前的进度看,最可能的办法就是看看怎么改进 Windows 7 的虚拟机性能。 |
9 ysc3839 Nov 21, 2025 via Android 安装 Win10 ARM 呢? |
10 yinmin Nov 21, 2025 via iPhone 反编译成 c#源码,然后升级到 net core (需要调整源码),再编译成 arm64 linux 版本。 |
11 duzhuo Nov 21, 2025 和硬件交互 感觉很复杂 |
12 yinmin Nov 21, 2025 via iPhone qemu 安装 windows 10 arm64 版,win 10 arm64 版是能直接跑 x86 或 x64 的,而且是高速跑。 |
17 saleacy Nov 21, 2025 via Android openssh |
18 kekxv Nov 21, 2025 via iPhone 你确定 wine 能跑? 如果可以,试试虚拟机 Linux x86 ,而不是虚拟 Windows |
19 passive Nov 21, 2025 via Android 弄台国产 via 装 Windows 把硬件驱动代理成 API 在 arm 机器上调用。 |
23 liyafe1997 Nov 21, 2025 目前来看,性能&兼容性最最最好的方案应该就是 Box86 了,但是 Box86 只能 ARM32 ,这是最头疼的点。但凡你的 exe 是 x64 的,能跑 Box64 on ARM64 ,都方便得多。 我之前这么在 RK3566 ( 4 核 A53 )上跑过 x64 exe ,就是典型的 Qt 工业 GUI 应用,性能完全是非常可用的程度。 如果你目前的 ARM64 的 Linux 不好装上 ARM32 支持库/坑太多的话,也许可以试试一些 Box86 Docker ? https://github.com/DerpyChap/box86-docker 看起来这个能在 ARM64 上 Box86 开箱即用 |
24 liyafe1997 Nov 21, 2025 |
25 liyafe1997 Nov 21, 2025 噢对,也许还有一个方案,装 Win11 on ARM64 虚拟机,然后里面是能跑 x86 exe 的。 |
26 liyafe1997 Nov 21, 2025 @rrubick dll 不是驱动,或者说是用户态驱动,x86 dll 在 Win on ARM 下不是问题。 sys 才是真正的内核态驱动,就看你的硬件有没有内核态驱动需求了。你的硬件是怎么连接的? USB ?串口?出现在设备管理器里面是什么东西? 如果是 USB ,可能直接走的 USB HID ,或者 USB 转串口,那这种基本都不是问题,甚至 libusb/winusb 也不是问题。但是如果是专有.sys 内核态驱动就不行了。 不过这种不常见,一般而言,要么走 HID/libusb/winusb ,要么是个 USB 串口。 |
27 kekxv Nov 21, 2025 @rrubick 你先试试能不能再 Linux x86 下跑,可以的话,就用虚拟机跑 Linux x86 测试。 如果还是不行,有个邪门的方法: - 你只是要和硬件交互,也就是不需要 UI 对吧? - 那么你可以看看 c# 怎么作为一个 http 服务器提供 api 接口 - 另外,c#的 exe 可以作为库引入 vs 开发进行调用 - 然后你改完之后,可以再试试你的 windows 虚拟机 ps:既然你用虚拟机,其实可以在你自己电脑开虚拟机测试好了再去折腾你的 arm |
28 rrubick OP |
31 Lockroach Nov 21, 2025 最简单的方案是直接基于新架构重构了 |
32 guanzhangzhang Nov 21, 2025 |
34 Calidum Nov 22, 2025 1. Wine64 9.0 开始有 WoW64 功能,有开启就能跑 32 位 x86 。安装好 Box64/Fex 运行 Wine64 就行。 3. Box64 开启 Box32 或者 Fex 也能跑 32 位的 Wine 。性能比跑 WoW64 好。 3. Hangover 基于 Arm64 版 Wine 性能好,ARM64EC 功能只对 x86 、x86_64 部分做转译。转译 32 位 x86 部分由 Box64/Fex 负责 (wowbox64.dll /libwow64fex.dll)。 x86 理论上 Hangover 用 wowbox64.dll 性能最好。 PS: 就算是龙芯和 RISC-V 架构也有用类似方案。 |
37 cowcomic Nov 22, 2025 感觉不行,同时跨 CPU 架构+OS ,除非像苹果那样出一个指令级别的转译功能 不过还是插个眼,要是搞定了,来学习学习 |
38 nivalxer Nov 22, 2025 @rrubick virtio 还有 guest tools 装不上是正常的。是 arm 物理机,通过 qemu 安装的 x86 系统,是模拟 x86 在跑,这个模式性能低,兼容性也差。可以试试 windows 10/windows 11 arm64 版本,试试直接虚拟机安装。windows 11 的 arm 兼容性更好一些,对于 x86 程序,包括 C++程序支持模拟运行,除了一些特定的系统驱动没办法运行,大部分都是可以跑的。 |
39 datou Nov 22, 2025 一眼上位机程序,联系设备厂商问问 |
40 zhangeric Nov 22, 2025 .net 的程序,可以用 ilspy 等工具看到源码的,花钱找人破译,再升级到.net core 框架,走跨平台的路子.注意啊,这样做成功的概率不到一半,我是建议重新找人开发个新软件. |
41 i8086 Nov 22, 2025 看了原帖内容,这部分不叫迁移,需要重写。 架构都不一样,兼容做法是还是需要 windows 机器,并不是无脑全部 arm ,找领导沟通吧。 既然人家技术回复不支持,就不要折腾,坑肯定是一大堆的。 |
42 doosit Nov 22, 2025 试试铠大师,希望可以帮到你 |
43 RobinHuuu Nov 22, 2025 via Android 不是,到底要调用什么硬件,各种虚拟方案能访问到硬件吗? |
44 devtk Nov 22, 2025 看上去是个大活,连源码都没有,难 |
45 ltyj2003 Nov 22, 2025 via Android 就说干不了,勉强跑其他也是一堆未知问题,申请经费买套新的。 |
46 HojiOShi Nov 22, 2025 这种活你不条件反射般地当场拒绝,资历还是太浅了。我同事自己的源码,和硬件交互不深的,适配这些系统都花了大半年时间。没源码是怎么敢包揽这种活的? |
47 jasm Nov 22, 2025 尝试过 wine+box 的方案,折腾好几天也仅仅只是勉强跑起来,实际使用后面一堆坑,动不动崩溃 |
48 mikewang Nov 23, 2025 当然是利用 kvm 先跑一个 Windows on Arm 的虚拟机,就能直接运行 Win32 程序了。这利用的是 Windows 自带的 x86 转译功能(十分高效,类似于 Rosetta 2 )。 下面的 repo 甚至可以在树莓派的 Arm64 上跑 Win32 程序: https://github.com/Botspot/bvm |
49 tangmanger Nov 23, 2025 付费 帮你改成.net6+的 |
50 tangmanger Nov 23, 2025 @tangmanger dnspy+ilspy |
51 dog82 Nov 24, 2025 信创买了麒麟 V10 ,非常让人抓狂吐血 |
52 ruanimal Nov 24, 2025 如果有硬件驱动相关的需求,各种虚拟化的方式估计都不太好使 |
53 rrubick OP |
55 ktblack Nov 24, 2025 via Android box86 可以尝试源码安装,用 docker 可以允许你无数次次失败回滚尝试,我构建了 box86+box64+wine32+wine64 的镜像,但是还是会有问题,像战地 2 加载地图就报错内存溢出 |
56 ktblack Nov 24, 2025 via Android 尝试了红警 2 、cs1.6 几乎完美运行,同花顺、百度网盘非常卡顿但勉强能用 |
57 ktblack Nov 24, 2025 via Android 感兴趣可以试一下,Dockerfile 和 wine.sh 启动脚本放在这里了: https://www.myqnapcloud.cn/smartshare/70110h14k625p40u46t68840_62895h7k82p82q6612svv83286699d7j |
58 wheat0r Nov 24, 2025 正确方法是报一个国产化适配的项目,要一笔预算,做一套新的 |
59 sn0wdr1am Nov 24, 2025 放过自己 |
60 kero991 Nov 24, 2025 via Android 是这样,x86 虚拟机能不能装,能,但 qemu 官方给的跨架构性能损失在几十倍到百倍以上,也就是说,正常开机 1 分钟,你用 qemu 要开机 100 分钟。这玩意真的就是开机 2 小时,装系统用 1 天的速度。 推荐当然是 box86/exgear+wine ,这玩意就是响应速度不佳且经常卡死,兼容性也远不如 x86Linux 直接 wine ,但好歹勉强能用。唯一的问题是,wine 不能调用驱动的,你得确定你得硬件有 arm64 Linux 的驱动,而不是说有个 win 驱动,那玩意驱动不了。 最后,我不确定你用的芯片,arm64 的几个芯片里,飞腾兼容性最好,基本就是公版 arm64 ,麒麟 9000 比较坑,他用 OpenGL ES+wayland 这种几乎没人用的组合,极难适配。最差的选择是鲲鹏,这玩意阉割了 32 位指令集,所以完全不可能使用任何 32 位应用。 |
61 kero991 Nov 24, 2025 via Android 所以我建议你先确定客户端的芯片,虽然架构都是 arm64 ,但各家(主要是华为这个坑 b )做了很多魔改。另外,飞腾官方有一个虚拟机软件,相当于 qemu+libvirt 的整合,并且有比较简易的前端。如果你自己编译或者安装的 qemu ,装 win11 arm 要把显示驱动切换为 ramfb (高版本才有) /td> 总而言之,wine 方案是最优选,arm win11 是次选,装 x86 win 基本不可用。 当然,最重要的是,这所有的方案你都无法保证能够调用驱动。wine 本身就不支持驱动(为什么国产网游都不能用 wine 玩,因为他们的反作弊都是驱动级的,wine 不支持),而虚拟机,你只有把硬件直通进虚拟机才有可能调用驱动,而别忘了,即使你虚拟了 arm win11 ,你驱动可是 x32 的,arm win 可以运行 x32 exe ,但可安装不了 x32 的驱动哦 |
62 kero991 Nov 24, 2025 via Android 所以我觉得,你最终最好的结果就是不管什么方法,exe 界面跑起来了,但硬件完全连接不上,没有驱动,无法驱动。 |
64 kero991 Nov 26, 2025 昨天帖子发了一半没发出去,手机上 v2 时断时续。 接上,我不建议你直接折腾 box86/exgear ,自己去配置 wine 如果你是统信系统(不是我也建议你用 live 光盘测试一下),先试试用统信 windows 应用兼容引擎,他们作了很多后台的调试,比你从头开始弄 box 强得多。 另外一个选择是装绿虎论坛做的那个 wine 游戏助手,这个的好处是可以随意组合各种版本的 box86 和 wine (软件直接就能下载),所有设置都有 gui 调试,这也是在 arm 机器上玩游戏的唯一选择(唯一能跑动 war3 的软件,统信那个兼容性不错但游戏性不行) 总而言之,不建议直接从头搞。 |