Windows ARM系统下x86/x64.NET应用能否使用ARM版C++ DLL?
解答
- 核心结论:x86应用无法直接调用ARM原生DLL,进程架构必须与所加载的原生DLL架构完全匹配。
- 错误原因:你遇到的
System.BadImageFormatException,本质是x86的.NET进程(运行在Windows ARM的x86仿真层WoW64中)尝试加载ARM架构的DLL,二者架构不匹配导致加载失败。 - 可行解决方案:
- 切换.NET应用架构:将.NET 7项目编译为ARM64架构(在项目属性的目标平台中选择ARM64),即可正常加载ARM原生DLL。
- 适配DLL架构:若要保持.NET应用为x86架构,需将C++原生DLL编译为x86版本,供x86进程加载。
内容的提问来源于stack exchange,提问作者Oblomingo
相关产品推荐
相关产品推荐

