我维护一个大约五年前制作的Visual Basic程序。 使用该程序的所有其他桌面当前是x32位操作系统。最近我得到了一个x64位系统桌面。我没有导出使用此桌面上编译的此程序版本。
当尝试从该程序运行项目时,我收到以下异常:
尝试加载格式不正确的程序。 (HRESULT异常:0x8007000B)
经过一番搜索后,我发现此错误是由不匹配的CPU类型引起的。因为我是唯一一个有此错误的人,并且运行该程序的唯一x64位CPU,我认为这是最好的解释。 (有些细节可以在这里找到:"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吗?
答案 0 :(得分:0)
解决方案是更改目标CPU。