当我尝试启动我在C ++中创建的程序时出现此错误。它在我的其他计算机(XP SP3 32位)上工作正常,但在我的Windows 7 64位版本上没有。 当我在程序上运行Dependency Walker时,它告诉我IESHIMS.dll缺失,但是它存在于32位和64位版本的Internet Explorer文件夹中。
任何人都可以帮我吗?
答案 0 :(得分:18)
错误代码为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实用程序可以显示它正在尝试加载的文件。