2010-07-31 78 views
3

当我尝试启动我在C++中创建的程序时,出现此错误。它可以在我的另一台电脑(XP SP3 32bit)上正常工作,但不能在我的Windows 7 64位版本上正常工作。 当我在程序上运行Dependency Walker时,它告诉我IESHIMS.dll丢失,但是它在32位和64位版本的Internet Explorer文件夹中。“应用程序未能正确初始化(0xc000007b)。”

任何人都可以帮助我吗?

回答

16

错误代码是STATUS_INVALID_IMAGE_FORMAT,“波波要么没有设计在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工具可以显示你正在加载的文件。

+1

嗯没关系。好吧,我看到我安装了64位版本的MySQL ..我不确定这是否会成为问题,因为有更多的DLL加载,但当然这会导致程序试图从MySQL加载64位驱动程序。 让我们希望32位版本不会与64位版本冲突..! – lordstyx 2010-07-31 19:19:08

+0

是的,那样做。 – 2010-07-31 19:20:12

+0

非常感谢!现在已经修复了。 – lordstyx 2010-07-31 19:52:37