苹果M芯片下开发能否调用x86编译的.dll/.so动态链接库
如题,要做python和C++的策略交易,在MAC下面部署vscode、anaconda、mingw,调用的接口其中python接口是.dll,C++有.dll和.so可选,最后生成.exe,可以实现吗,请教各位开发大佬。 这是进错论坛了? mac有自己的动态链接库dylib,和so大差不差,不过很多细节是独有的,当年做一个跨平台的库这里最折磨人 [流泪]我以为就我来论坛吹水的,结果你们是认真的 用crossover跑吧,直接是不行了 不行,建议用虚拟机,虚拟机跑ARM64的Windows,是可以运行x86/x86-64的程序的。 ysc3839 发表于 2023-3-6 15:25不行,建议用虚拟机,虚拟机跑ARM64的Windows,是可以运行x86/x86-64的程序的。
好的多谢,全套部署在虚拟机上开发这条路感觉有坑。。。 wimming 发表于 2023-3-6 15:39
好的多谢,全套部署在虚拟机上开发这条路感觉有坑。。。
不然其他方案就只有Wine/CrossOver了,或者虚拟机ARM64 Linux+qemu模拟,相比之下更坑。
vscode可以远程开发,问题不大。 pcgsf22 发表于 2023-3-6 15:04
mac有自己的动态链接库dylib,和so大差不差,不过很多细节是独有的,当年做一个跨平台的库这里最折磨人 ...
现在是跨平台+跨芯片架构,我也感觉不太行,但想用MAC。。 直接跑必然不行,别说系统库,CPU架构都换了。有源码自己编译都不一定行,大概率要做平台移植。(不然好多win的专业软件,重新MAC下编译一下不就移植了,既然没有,说明道路之险阻) [狂笑] universal和x86二进制能调用x86库,但是为什么是windows的二进制格式? 为什么要用arm的cpu开发x86的东西
先不说dll和exe这俩二进制文件就不可能在macOS下乖乖运行
你这目标客户端是win还是mac?
看着内容我怎么感觉像是要用win32开发mac的程序 有源码要做移植再mac重新编译,或者DLL写的很好有类似
#if define(X86)
#elseif define(MAC)
这种跨平台的优化,重新编译一下就行
没源码大概率(99%)跑不过的 xyzhangabc 发表于 2023-3-6 15:59
有源码要做移植再mac重新编译,或者DLL写的很好有类似
#if define(X86)
#elseif define(MAC)
没源码,我也感觉跑不过,不但跨系统还跨芯片,就是想用MAC了。。 用Rosetta运行编译流 去 v2ex 问,这里是超频论坛,超频就是结果,至于为什么超频不在讨论之列 差点以为进错论坛了,调试的时候装个linux吧,毕竟这是开发环境不是生产环境,后续部署也得上linux 或者windows 平台。 我手上恰好也有个自己写的动态库,别说用 M 系列完全不同于 x86 的架构了,就算是 x86_64 同一架构下也不能实现 macOS 直接调用 .so .dll,必须老老实实地用 Xcode 编译 .dylib privater 发表于 2023-3-6 16:09
去 v2ex 问,这里是超频论坛,超频就是结果,至于为什么超频不在讨论之列
打不开~ 不可能的。动态库都是已经根据架构编译链接完成的可执行文件了,在arm下绝对不行的,确实可以像楼上说的在 arm windows虚拟机上运行,但是考虑的其他环境问题也是天坑 fdhfdhd 发表于 2023-3-6 15:57
为什么要用arm的cpu开发x86的东西
先不说dll和exe这俩二进制文件就不可能在macOS下乖乖运行
你这目标客户端 ...
目标客户的电脑开发环境未知,刚好有个客户说它用的新买的苹果电脑。我这边只能提供X86的接口 imyz 发表于 2023-3-6 16:25
我手上恰好也有个自己写的动态库,别说用 M 系列完全不同于 x86 的架构了,就算是 x86_64 同一架构下也不能 ...
我也觉得不行,不但跨系统还跨芯片架构,但客户用的苹果电脑,我给出否定答复的同时也要给个大概的解决方案。 fangjiecover 发表于 2023-3-6 16:35
不可能的。动态库都是已经根据架构编译链接完成的可执行文件了,在arm下绝对不行的,确实可以像楼上说的在...
虚拟机里面也是运行的window arm和Linux arm的系统,虽说可以运行x86的软件,但兼容性不得而知,而且是在开发环境里调用window x86和linux x86编译的东西 跑不了,新mac都是arm架构了,除非你原来的接口也有arm版本,不然就凉凉,当然如果有源码,重编下也不费事 不光CPU指令不一样,连操作系统平台都不一样,linux下的库还好办,重新编译一下就行了
exe和dll肯定不能直接跑了,连Rosetta都不行,要么虚拟机装Win11ARM,要么crossover,先crossover再Rosetta,反正都要转译两次,有这功夫不如换个X86电脑拍Windows或者linux wimming 发表于 2023-3-6 16:38
我也觉得不行,不但跨系统还跨芯片架构,但客户用的苹果电脑,我给出否定答复的同时也要给个大概的解决方 ...
你提到的那个 .so .dll 是自己有源码的吗?若没基本就不必再费劲了,即使你最终成功,所付出的与你最终得到的肯定是不成正比的;若是有源码的,无非是在 macOS 下 Xcode 代码和库微调一下全新编译,这完全就是自己编程/语言功底的事儿了 win下的dll,你不可能直接从macOS上调用吧,如果走虚拟,也要看arm的windows是否支持x86的dll,不然就要走模拟。 源码交叉编译吧,linux下编内核经常搞的,应该不是什么难事,交叉编译器里有x86-linux-ld,可以链接吧,否则git上action生成那么多平台的可执行文件,难道都要找个原生机器,不过苹果的就不知道有没有完善的toolchain yajian2 发表于 2023-3-6 20:36
源码交叉编译吧,linux下编内核经常搞的,应该不是什么难事,交叉编译器里有x86-linux-ld,可以链接吧,否 ...
谢谢大佬指点
页:
[1]
2