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

从IronPython调用C++/CLI DLL时出现0x800700C1错误求助

问题:IronPython加载C++/CLI Wrapper.dll时报错“not a valid Win32 application”

我按照教程实现了C++/CLI的Wrapper.dll,单独运行正常,但用IronPython调用时加载失败,报错:

not a valid Win32 application. (Exception from HRESULT: 0x800700C1)

我的IronPython代码如下:

import clr

clr.AddReferenceToFileAndPath("Wrapper.dll")
clr.AddReference("mscorlib")

import CLI
import System

if __name__ == "__main__":
    e = CLI.Entity("the guy", 54, -123)
    e.Move(-54, 123)
    System.Console.WriteLine(e.XPosition + " " + e.YPosition)

问题原因

这个错误的核心是进程架构不匹配:

  • C++/CLI编译的Wrapper.dll不支持真正的“Any CPU”模式,编译时会绑定到具体的平台架构(x86或x64)
  • IronPython运行时的架构(x86或x64)与Wrapper.dll的编译架构不一致,导致CLR无法加载非当前进程架构的原生混合程序集。

可行解决方案

1. 确认IronPython的运行架构

打开命令行,运行ipy.exe -V(IronPython 2)或ipython.exe -V(IronPython 3),查看输出的架构标识;也可以右键ipy.exe→属性→详细信息,查看“平台”字段,确认是x86还是x64。

2. 重新编译Wrapper.dll匹配架构

在Visual Studio中操作Wrapper项目:

  • 右键项目→属性→配置属性→常规,将“平台工具集”设置为对应架构的版本(如v143_x86或v143_x64)
  • 打开解决方案的配置管理器,将项目的“平台”选项设置为与IronPython一致的架构(x86或x64)
  • 重新编译项目,生成对应架构的Wrapper.dll

3. 验证架构一致性

用dumpbin工具检查Wrapper.dll的架构:

dumpbin /headers Wrapper.dll

查看输出中的machine字段:x86对应14C,x64对应8664,确保与IronPython的架构完全匹配。

4. 重新运行脚本

将编译好的同架构Wrapper.dll放到IronPython脚本可访问的路径,再次执行代码即可正常加载。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 15:18:25