【问题标题】:"The application failed to initialize properly (0xc000007b)."“应用程序未能正确初始化 (0xc000007b)。”
【发布时间】:2010-08-01 00:56:24
【问题描述】:

当我尝试启动我用 C++ 编写的程序时出现此错误。它在我的另一台计算机(XP SP3 32 位)上运行良好,但在我的 windows 7 64 位版本上运行良好。 当我在程序上运行 Dependency Walker 时,它告诉我 IESHIMS.dll 丢失,但是它在 32 位和 64 位版本的 Internet Explorer 文件夹中..

谁能帮我解决这个问题?

【问题讨论】:

    标签: c++ runtime-error


    【解决方案1】:

    错误代码是 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 实用程序可以显示它正在尝试加载的文件。

    【讨论】:

    • 嗯,好吧。好吧,我看到我安装了 64 位版本的 MySQL。我不确定这是否会成为问题,因为加载了更多的 DLL,但这当然会导致程序尝试从 MySQL 加载 64 位驱动程序。让我们希望 32 位版本不会与 64 位版本冲突..!
    猜你喜欢
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 2014-07-21
    相关资源
    最近更新 更多