32位DLL引用在64位机器上没有失败

本文关键字:失败 机器 64位 DLL 引用 32位 | 更新日期: 2023-09-27 18:07:13

我创建了一个控制台应用程序。在该应用程序中,我引用了一个x86编译的dll。在项目设置中,我将目标平台更改为x64。

当我运行应用程序(F5)时,它抛出BadImageFormatException。没关系,但是如果我只是构建(构建成功)并将。exe文件复制到其他64位操作系统机器并运行exe,而不是在VS中运行应用程序,它运行得很好。

为什么在另一台机器上没有失败。原因是什么?

我的开发机器是64位windows 7,VS2010是32位,另一台机器是64位windows server 2008 R2

32位DLL引用在64位机器上没有失败

因为32位的dll与64位的CPU兼容,另一方面,64位的dll与32位的CPU不兼容。

当你调试你的应用程序时,调试器期望应用程序是64位的,这就是它失败的原因。

试着不调试CTRL+F5运行它,它会运行得很好。