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。
我维护着大约五年前制作的 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。