1
rrubick OP 一楼请上帖中大佬
@Yjhenan @Mithril @lujiaxing @urlpha @sujin190 @nivalxer @tangmanger @rogerhesong @chenxiansheng @loveour @linhua @guanzhangzhang @fzdfengzi |
2
lpf0309 1 天前
建议放弃,如果好做的话,这么多软件也不会提供 arm 和 amd 版本了了
|
3
nivalxer 1 天前
看起来物理机是 arm ,走 qemu 模拟 x86 在跑,所以性能很低是正常的(例如在 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 23 小时 55 分钟前
你这活谁派给你的,我不知道这人是看得起你还是看不起你。你连源码都没有,还想换架构、换系统迁移,我经常用麒麟和 win ,有源码我都不敢保证能够迁移,你这还不如联系硬件厂商要 arm linux 驱动,然后再重写软件功能。你这硬件怎么交互得?你用虚拟机怎么保证这硬件能连到虚拟机的系统上。
|
6
aosailuolierwang 23 小时 51 分钟前
我就是专门搞 XC 改造的,明确告诉你这个搞不了。
|
7
linhua 23 小时 50 分钟前
放弃吧,如果和硬件交互的话,windows 和 linux 完全不一样,得改代码
|
8
Mithril 23 小时 31 分钟前
Wine 是不行的,它只是转换 API 调用,不能转换架构。
虚拟机是可行的,只要找个能用的 Windows 就行了。你可以试试关了 PageFile 等。 但如果你那一堆 DLL 里面还有些 C++的,你找 XP 就不一定能运行了。 以你目前的进度看,最可能的办法就是看看怎么改进 Windows 7 的虚拟机性能。 |
9
ysc3839 21 小时 52 分钟前 via Android
安装 Win10 ARM 呢?
|
10
yinmin 21 小时 47 分钟前 via iPhone
反编译成 c#源码,然后升级到 net core (需要调整源码),再编译成 arm64 linux 版本。
|
11
duzhuo 21 小时 43 分钟前
和硬件交互 感觉很复杂
|
12
yinmin 21 小时 40 分钟前 via iPhone
qemu 安装 windows 10 arm64 版,win 10 arm64 版是能直接跑 x86 或 x64 的,而且是高速跑。
|
17
saleacy 20 小时 0 分钟前 via Android
openssh
|
18
kekxv 19 小时 59 分钟前 via iPhone
你确定 wine 能跑?
如果可以,试试虚拟机 Linux x86 ,而不是虚拟 Windows |
19
passive 19 小时 55 分钟前 via Android
弄台国产 via 装 Windows 把硬件驱动代理成 API 在 arm 机器上调用。
|
23
liyafe1997 19 小时 37 分钟前
目前来看,性能&兼容性最最最好的方案应该就是 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 19 小时 36 分钟前 |
25
liyafe1997 19 小时 34 分钟前
噢对,也许还有一个方案,装 Win11 on ARM64 虚拟机,然后里面是能跑 x86 exe 的。
|
26
liyafe1997 19 小时 31 分钟前 @rrubick dll 不是驱动,或者说是用户态驱动,x86 dll 在 Win on ARM 下不是问题。
sys 才是真正的内核态驱动,就看你的硬件有没有内核态驱动需求了。你的硬件是怎么连接的? USB ?串口?出现在设备管理器里面是什么东西? 如果是 USB ,可能直接走的 USB HID ,或者 USB 转串口,那这种基本都不是问题,甚至 libusb/winusb 也不是问题。但是如果是专有.sys 内核态驱动就不行了。 不过这种不常见,一般而言,要么走 HID/libusb/winusb ,要么是个 USB 串口。 |
27
kekxv 19 小时 31 分钟前
@rrubick 你先试试能不能再 Linux x86 下跑,可以的话,就用虚拟机跑 Linux x86 测试。
如果还是不行,有个邪门的方法: - 你只是要和硬件交互,也就是不需要 UI 对吧? - 那么你可以看看 c# 怎么作为一个 http 服务器提供 api 接口 - 另外,c#的 exe 可以作为库引入 vs 开发进行调用 - 然后你改完之后,可以再试试你的 windows 虚拟机 ps:既然你用虚拟机,其实可以在你自己电脑开虚拟机测试好了再去折腾你的 arm |
28
rrubick OP |
31
Lockroach 18 小时 26 分钟前
最简单的方案是直接基于新架构重构了
|
32
guanzhangzhang 17 小时 54 分钟前
|
34
Calidum 17 小时 22 分钟前
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 16 小时 48 分钟前
感觉不行,同时跨 CPU 架构+OS ,除非像苹果那样出一个指令级别的转译功能
不过还是插个眼,要是搞定了,来学习学习 |
38
nivalxer 14 小时 34 分钟前
@rrubick virtio 还有 guest tools 装不上是正常的。是 arm 物理机,通过 qemu 安装的 x86 系统,是模拟 x86 在跑,这个模式性能低,兼容性也差。可以试试 windows 10/windows 11 arm64 版本,试试直接虚拟机安装。windows 11 的 arm 兼容性更好一些,对于 x86 程序,包括 C++程序支持模拟运行,除了一些特定的系统驱动没办法运行,大部分都是可以跑的。
|
39
datou 14 小时 1 分钟前
一眼上位机程序,联系设备厂商问问
|
40
zhangeric 9 小时 1 分钟前
.net 的程序,可以用 ilspy 等工具看到源码的,花钱找人破译,再升级到.net core 框架,走跨平台的路子.注意啊,这样做成功的概率不到一半,我是建议重新找人开发个新软件.
|
41
i8086 8 小时 24 分钟前
看了原帖内容,这部分不叫迁移,需要重写。
架构都不一样,兼容做法是还是需要 windows 机器,并不是无脑全部 arm ,找领导沟通吧。 既然人家技术回复不支持,就不要折腾,坑肯定是一大堆的。 |
42
doosit 7 小时 3 分钟前
试试铠大师,希望可以帮到你
|
43
RobinHuuu 6 小时 28 分钟前 via Android
不是,到底要调用什么硬件,各种虚拟方案能访问到硬件吗?
|
44
devtk 6 小时 11 分钟前
看上去是个大活,连源码都没有,难
|
45
ltyj2003 4 小时 57 分钟前 via Android
就说干不了,勉强跑其他也是一堆未知问题,申请经费买套新的。
|
46
HojiOShi 4 小时 56 分钟前
这种活你不条件反射般地当场拒绝,资历还是太浅了。我同事自己的源码,和硬件交互不深的,适配这些系统都花了大半年时间。没源码是怎么敢包揽这种活的?
|
47
jasm 4 小时 7 分钟前
尝试过 wine+box 的方案,折腾好几天也仅仅只是勉强跑起来,实际使用后面一堆坑,动不动崩溃
|