2016-08-25 139 views
-1

有人可以帮助解决以下错误吗?应用程序错误。应用程序无法正确启动(0x000007b)。单击确定关闭应用程序

'WidgetKeyboard.exe': Loaded 'C:\Windows\SysWOW64\wsock32.dll', Cannot find or open the PDB file 
'WidgetKeyboard.exe': Loaded 'C:\Windows\SysWOW64\ws2_32.dll', Cannot find or open the PDB file 
'WidgetKeyboard.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll', Cannot find or open the PDB file 
'WidgetKeyboard.exe': Loaded 'C:\Windows\SysWOW64\rpcrt4.dll', Cannot find or open the PDB file 
'WidgetKeyboard.exe': Loaded 'C:\Windows\SysWOW64\sspicli.dll', Cannot find or open the PDB file 
'WidgetKeyboard.exe': Loaded 'C:\Windows\SysWOW64\cryptbase.dll', Cannot find or open the PDB file 
'WidgetKeyboard.exe': Loaded 'C:\Windows\SysWOW64\sechost.dll', Cannot find or open the PDB file 
'WidgetKeyboard.exe': Loaded 'C:\Windows\SysWOW64\nsi.dll', Cannot find or open the PDB file 
'WidgetKeyboard.exe': Loaded 'C:\Suneel\Keyboard\WidgetKeyboard\Debug glsdll md\iconv.dll', Binary was not built with debug information. 
'WidgetKeyboard.exe': Loaded 'C:\Suneel\Keyboard\WidgetKeyboard\Debug glsdll md\zlib1.dll', Binary was not built with debug information. 
The program '[6452] WidgetKeyboard.exe: Native' has exited with code -1073741701 (0xc000007b). 

回答

1

你不给我们太多从头开始。显然你在.NET中使用DllImport(我猜从标签,如果我错了,纠正我)。

0xc000007b意味着STATUS_INVALID_IMAGE_FORMAT,并且您可能试图将32位图像加载到64进程中,反之亦然。

通常,Windows会试图阻止这种情况发生。文件系统虚拟化可确保将从C:\ Windows \ system32加载的DLL重定向到C:\ Windows \ syswow64,并且注册表虚拟化可确保COM服务器与COM客户端的位元相匹配。

您可能会绕过这些对策措施。也许你将DLL复制到与EXE相同的文件夹中。或者DLL路径的分辨率出错,例如因为你依赖于系统的PATH环境变量或者你使用了SetDllDirectory()

首先,检查应用程序的位元是否与您导入的DLL的位元相匹配。如果失败了,请使用SysInternals的ProcMon,它会显示它正在尝试加载哪个文件。

+0

我已经使用了正确的一些库我看到的问题是libiconv每当我的程序运行它都要求找到iconv.dll,已经从https://sourceforge.net下载了64位库/ projects/mingw-w64 /?source = typ_redirect,并将.dll命名为.iconv.dll并在运行时看到此错误。我现在唯一可以做的就是“http://www.bitdefender.com/files/KnowledgeBase/file/dlls_x64.zip”替换这些文件...这是唯一的选择似乎离开了,请建议 –

+0

是你的自己的进程64位?你有没有检查过程监视器?下载的版本是否正确?如果将正确版本的DLL放在系统上而不是下载,会发生什么情况? –

+0

是我的是一个64位的进程,也有运行依赖的步行者,我可以看到在依赖walker中唯一的错误是“IESHIMS.DLL - 错误打开文件。系统找不到指定的文件(2)”,iconv的下载版本.dll是否正确我无法验证它,我可以知道如何验证它是否是32位/ 64位?也不确定“如果将正确版本的DLL放在系统上,而不是手动而不是下载,会发生什么?”如何做到这一点...对于更多查询感到抱歉,因为我是Windows中的调试新手,我只有Linux使用gdb的调试技巧 –

0

这是一个NTSTATUS错误代码。查看这里:https://msdn.microsoft.com/en-gb/library/cc704588.aspx

在你的情况下0xC000007BSTATUS_INVALID_IMAGE_FORMAT。像这样描述:

{不良图像}%hs不是设计为在Windows上运行,或者它包含错误。尝试使用原始安装介质重新安装程序,或与系统管理员或软件供应商联系以获得支持。

通常,这意味着加载程序在解析加载时间相关性时试图将64位DLL加载到32位进程中,反之亦然。您显示的诊断信息表明您的过程是一个32位过程。所以你应该寻找加载器试图加载的64位DLL。在配置文件模式下使用Dependency Walker工具进行调试。

相关问题