c# - 加载 32 位 DLL 时出现 BadImageFormatException,目标是 x86

标签 c# dll dllimport 32bit-64bit badimageformatexception

我有一个肯定是 32 位的 DLL (FreeType)( header :IMAGE_FILE_MACHINE_I386)。

我想在 C# 代码中使用它,使用 DllImport。

我的应用程序的目标是 x86,IntPtr.Size 是 4,进程是 32 位。

但是我得到 BadImageFormatException(来自 HRESULT 的异常:0x8007000B)。有什么问题?

当然我用的是 64 位的 Windows 7。

最佳答案

据我了解,专为 x86 构建并在 64 位操作系统中运行的程序集只能加载为 x86 构建的库,否则将抛出 BadImageFormatException。在 64 位操作系统中,为任何 CPU 或 x64 构建的程序集在尝试加载 x86 库时会抛出相同的异常。

因此,假设没有发生异常奇怪的事情,我会确保您已通过打开项目属性并单击“构建”选项卡将应用程序设置为构建为 x86。确保“平台目标”设置为“x86”而不是任何 CPU。

或者,您可以尝试查找 64 位版本的 DLL 以进行测试。

关于c# - 加载 32 位 DLL 时出现 BadImageFormatException,目标是 x86,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2728560/

相关文章:

python - 加载的dll的路径是什么?

c# - 如何仅在程序安装后第一次加载表单

c# - InsertOnSubmit 约束

visual-c++ - 什么是 .sym 文件以及如何从 Visual-C++ 使用它?

c# - 如果/当 DllImport 被多次调用时会发生什么?

c# - P/Invoke with Shell32,绕过 Interop.Shell32.dll 生成

c# - 异步数据加载及后续错误处理

c# - ASP MVC 3 获取foreach中特定项目的隐藏字段值

windows - 在最终用户系统上调试 "application configuration is incorrect"问题的好方法?

c# - 在 C# 中使用 webkit 库的问题