【发布时间】:2012-11-09 02:55:20
【问题描述】:
当我将源代码转移到Win7 64-bit 机器上时,当我尝试编译和运行以AnyCPU 为目标的解决方案时,我得到一个BadImageFormatException。
XP 32-bit 不会发生这种情况。
有什么问题?
【问题讨论】:
-
这是运行时错误,不是编译时错误。如果您不知道您可能使用的是什么 32 位组件,那么一个明显的解决方案是针对 x86。
-
但是当我在
XP 32-bit上定位AnyCPU时,这很好。如果我以x86为目标,编译后的应用程序会在x64上运行吗? -
你的程序集中有任何 PInvoke/unsafe/COM 等代码吗?
-
@Pawel:代码中有COM和外部DLL调用。
-
在我看来,您的应用程序正在尝试以 64 位模式运行,但您使用的本机 dll 之一(COM 或 dll)没有 64 位版本(或者可能是您使用的程序集设置为 x86?-我不确定这是否会触发 BadImageFormatException)。然后 dll 被加载到 64 位进程并且你有崩溃。请注意,由于内置 x86 模拟器,32 位本机代码可以在 64 位机器上运行。因此,如果您以 AnyCPU 为目标,您的应用程序将在 x86 和 x64 上运行。
标签: .net visual-studio 64-bit badimageformatexception anycpu