当我尝试启动用 C++ 编写的程序时,出现此错误。它在我的另一台计算机(XP SP3 32 位)上运行良好,但在我的 Windows 7 64 位版本上运行不佳。
当我在程序上运行 Dependency Walker 时,它告诉我缺少 IESHIMS.dll,但它位于 32 位和 64 位版本的 Internet Explorer 文件夹中。
谁能帮我这个?
错误代码为 STATUS_INVALID_IMAGE_FORMAT, "Mumble要么不适合在 Windows 上运行,要么包含错误。尝试使用原始安装介质再次安装该程序,或联系您的系统管理员或软件供应商寻求支持。”
对于 64 位版本的 Windows 来说,这可能有点过时了,90% 的可能性是您的 32 位程序正在尝试加载 64 位 DLL。 Windows 采取了很多措施来防止这种情况发生。文件系统虚拟化确保从 c:\windows\system32 加载的 DLL 被重定向到 c:\windows\syswow64,即 32 位 DLL 的所在位置。注册表虚拟化可确保 COM 服务器与 COM 客户端的位数相匹配。
您所做的一些事情可以绕过这些对策。也许您使用了 SetDllDirectory()。或者您将 DLL 复制到与 EXE 相同的文件夹中。或者您希望系统的 PATH 环境变量可以帮助您的程序找到正确的 DLL。类似的事情,从你的问题中还不清楚。 Windows 事件日志中应该有它的记录(不是 100% 确定)。如果所有其他方法都失败,SysInternals 的 ProcMon 实用程序可以向您显示它正在尝试加载的文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)