c# - .NET 程序集中 BadImageFormatException 的其他原因?

标签 c# c++ visual-studio visual-studio-2008 dllimport

我正在使用 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/

相关文章:

c# - 为什么我要按位置绑定(bind) OracleCommand 参数?

c++ - 新的正在占用大量额外的内存

visual-studio - "code ."命令无法从 mac 终端打开 Visual Studio Code 操作符

c# - 我想在 session ID licitys 中存储列表项,但不能这样做可以有任何建议

c# - 如何使用相同的通用方法来验证不同类型

python - 为 numpy 创建一个简单的 SWIG 类型映射

c++ - 构造虚拟基类时的编译器行为

c++ - 如何解决这个编译错误

c# - .NET 设置图片显示大小

C++ winApi 无法处理子窗口事件