c++ - "The application failed to initialize properly (0xc000007b)."

标签 c++ runtime-error

当我尝试启动我用 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/

相关文章:

c - 如何避免插入排序中的 SIGSEGV 错误

c++ - 如何散列std::string?

.net - OpenCV多线程调用

c# - 将 C++ 移植到 C#

malloc - 应用程序由于UISignPickerController中的空闲列表中的指针无效签名而无效

java - 尝试使用 Double 与 double 计算用户输入

c++ - 提高 C++ 中 ifstream 的性能

c++ - 通过 malloc 为 std::string 数组分配内存不起作用

go - 如何编写 “exception oriented”代码而不是 “if-error oriented”代码?

java - 出现异常,我不知道为什么