2016-08-25 138 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工具進行調試。

相關問題