当我尝试启动我用 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 实用程序可以向您显示它正在尝试加载的文件。
关于c++ - "The application failed to initialize properly (0xc000007b).",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3378616/