当我尝试启动我用 C++ 编写的程序时出现此错误。它在我的另一台计算机(XP SP3 32 位)上运行良好,但在我的 windows 7 64 位版本上运行良好。当我在程序上运行 Dependency Walker 时,它告诉我 IESHIMS.dll 丢失,但是它在 32 位和 64 位版本的 Internet Explorer 文件夹中。
谁能帮我这个?
当我尝试启动我用 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 被重定向到 32 位 DLL 所在的 c:\windows\syswow64。注册表虚拟化确保 COM 服务器与 COM 客户端的位数相匹配。
您所做的某些事情可以绕过这些反措施。也许你使用了 SetDllDirectory()。或者您将 DLL 复制到与 EXE 相同的文件夹中。或者您希望系统的 PATH 环境变量可以帮助您的程序找到正确的 DLL。类似的东西,从你的问题中还不清楚。Windows 事件日志中应该有它的记录(不是 100% 肯定)。如果一切都失败了,SysInternals 的 ProcMon 实用程序可以向您显示它正在尝试加载的文件。