You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacBook M1通过Parallels Desktop运行VS遇System.BadImageFormatException异常求助

解决C#调用汇编DLL的BadImageFormatException异常(M1 Parallels环境)

异常内容翻译:

'System.BadImageFormatException' 发生在 LaplaceFilter.exe 中
未处理的异常类型 System.BadImageFormatException 出现在 LaplaceFilter.exe 中
尝试加载格式不正确的程序。(HRESULT异常代码:0x8007000B)
程序 '[4636] LaplaceFilter.exe' 已退出,代码为 4294967295 (0xffffffff)

解决办法:

这个问题核心是CPU架构不匹配——M1是ARM64架构,Parallels虚拟机的系统架构、C#项目编译目标、汇编DLL的架构三者必须完全统一,以下是具体修复步骤:

  • 检查Parallels虚拟机的Windows版本架构
    如果你的Windows真机是x64版本,Parallels里必须安装x64版本的Windows,不能用ARM64版本。打开Parallels虚拟机设置,确认系统类型为x64 Windows。如果是ARM64 Windows,要么更换x64系统镜像,要么重新编译汇编DLL为ARM64架构。

  • 锁定C#项目的平台目标
    在Visual Studio中右键项目 → 属性 → 生成 → 平台目标,设置为和汇编DLL一致的架构(比如x64),不要选Any CPU——Any CPU在ARM虚拟机上会自动以ARM模式运行,导致加载x64 DLL失败。同时取消勾选“首选32位”选项,确保架构完全匹配。

  • 重新编译汇编DLL到对应架构
    如果你使用ARM64版本的Windows虚拟机,原来针对x64编写的汇编指令集不兼容,必须重新调整汇编代码(ARM64指令和x64差异较大),再编译为ARM64架构的DLL。

  • 用工具验证DLL架构
    打开Visual Studio开发者命令提示符,执行命令:dumpbin /headers 你的汇编DLL文件名.dll,查看输出里的machine字段:x64对应AMD64,ARM64对应ARM64。确保这个结果和虚拟机、C#项目的架构完全一致。

  • 检查Parallels处理器设置
    打开Parallels虚拟机配置 → 处理器,确保开启对应架构的兼容性支持。比如运行x64虚拟机时,需勾选“启用嵌套虚拟化”或“与Intel VT-x/EPT或AMD-V/RVI兼容”选项。

内容的提问来源于stack exchange,提问作者Kromczetto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 03:23:21