我有一个肯定是 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/