HRESULT 异常:0x8007000B 格式不正确 IESHIMS.DLL

Exception from HRESULT: 0x8007000B Incorrect Format IESHIMS.DLL

我维护着大约五年前制作的 Visual Basic 程序。 使用该程序的所有其他桌面当前都是 x32 位 OS。最近我得到了一个 x64 位系统桌面。我还没有导出在这个桌面上编译的这个程序的版本。

当尝试从该程序 运行 一个项目时,我收到以下异常:

An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

经过一番查找,发现这个错误是CPU类型不匹配导致的。因为我是唯一一个有这个错误的人,也是唯一一个 CPU 运行 宁这个程序的 x64 位,我认为这是最好的解释。 (一些细节可以在这里找到:"An attempt was made to load a program with an incorrect format" even when the platforms are the same

我在 Visual Basic 中检查了项目的编译设置;目标 CPU 设置为 "AnyCPU"。 该项目包含一个具有匹配名称的 DLL 文件。 (DLL 文件在程序安装期间下载到本地。)我下载了 Dependency Walker 应用程序,它允许以树节点格式查看 DLL 和 EXE 文件,显示文件位置、时间戳和 CPU 类型. 此树视图中的 DLL 显示为使用 x86 CPU 类型编译。我扩展了文件位置:

c:\program files (x86)\internet explorer\IESHIMS.DLL

编辑:

包含 ieshims.dll 的 DLL 是在 Labview 2008 中构建的,这是在 Labview 兼容 64 位(2009 版)之前。现在有此 DLL 的更新版本可用,但我仍然不知道它是否与 64 位兼容,或者如何做到这一点。如果需要,我可以访问 DLL 来重建它。

如果我只是将使用 DLL 的应用程序保留为 x86 版本,我 运行 会不会遇到任何问题?我是否应该创建一个 64 位版本的 DLL 以供使用?

解决方案是更改目标 CPU。