我正在使用 C# 开发 .NET 3.5 控制台应用程序,它使用 VC++ 非托管 DLL。几周前我处理它时它运行没有问题,但我今天又回来了,现在收到 BadImageFormatException(“试图加载格式不正确的程序。(HRESULT 的异常: 0x8007000B)).
我的开发工作站运行的是 64 位 Windows 7,并且我使用非托管代码进行了大量工作,因此我立即检查了 .NET 程序集和 VC++ 库是否都有 x86 目标。他们做到了。
可以肯定的是,我清理并重建了 VC++ 库和 .NET 程序集,但无济于事。
这两个系统都没有做任何特别不寻常的事情。 VC++ 库加载一个二进制数据文件并对它的内容进行一些数学处理。 .NET 程序集有库的 DllImports 和一些代码来连接它。几周前这一切都奏效了。
所以现在我想知道是否还有其他原因导致 BadImageFormatException 比我可能遇到的 x86/x64 冲突更不常见。
谢谢。
编辑:无论 x86 还是 x64 模式,我都会遇到相同的错误,但是当设置为“任何 CPU”时,执行会超过该点,但执行会在稍后调用 VC++ 库时中止,无一异常(exception)。不管这是否与这个问题有关,“任何 CPU”是否有与 x86 和 x64 不同的地方可以阐明这个问题?
最佳答案
当我收到此错误时,它总是由在 64 位进程中加载 32 位 DLL 引起的。
将 EXE 文件设置为编译为 x86 并查看它是否有效。
关于c# - .NET 程序集中 BadImageFormatException 的其他原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2494520/