2011-05-24 107 views
1

爲什麼我不能調試我的應用程序(雖然編譯好)?
1.它真的需要Windows DLL嗎?我如何附加他們?
2.爲什麼它不能識別我的Dll?它駐留在相同的文件夾中。C++ 編譯成功,無法調試 - STATUS_DLL_NOT_FOUND

(VS2005,主程序是C++與C#代碼)。

的錯誤是 - 調試::未處理的非可持續STATUS_DLL_NOT_FOUND異常被處理

'Transcriber.exe': Loaded 'D:\Folder\Transcriber.exe', Symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'D:\Folder\RegAccess71.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_8.0.50727.4027_x-ww_b779ebd5\mfc80.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_e6967989\msvcr80.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\msvcrt.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\gdi32.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\user32.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\shlwapi.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\advapi32.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\rpcrt4.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\secur32.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\oleaut32.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\ole32.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'D:\Folder\MetaData.dll', Symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\mscoree.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\imm32.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\lpk.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\usp10.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\HookDll.dll', Binary was not built with debug information. 
'Transcriber.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.MFCLOC_1fc8b3b9a1e18e3b_8.0.50727.4027_x-ww_0cc904d3\mfc80ENU.dll', Binary was not built with debug information. 
'Transcriber.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c\msvcr80d.dll', Symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_c8452471\mfc80d.dll', Symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c\msvcm80d.dll', Symbols loaded. 
'Transcriber.exe': Loaded 'D:\Folder\ITSConfigWrapper.dll', Symbols loaded. 
'Transcriber.exe': Loaded 'D:\Folder\InfoTransformerWrapper.dll', Symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\dbghelp.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\version.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_c8452471\mfc80ud.dll', Symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\system32\shell32.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_473666fd\ATL80.dll', No symbols loaded. 
'Transcriber.exe': Loaded 'D:\Folder\LoggerClientD.dll', No symbols loaded. 
**Debugger:: An unhandled non-continuable STATUS_DLL_NOT_FOUND exception was thrown during process** load 
The program '[4224] Transcriber.exe: Native' has exited with code -1073741515 (0xc0000135). 
+2

你知道哪個DLL無法加載嗎? (可能在加載過程中嘗試使用sysinternals procmon或filemon)您是否給DLL提供了與system32中相同的名稱,例如Security.dll,它可能認爲你試圖覆蓋的惡意原因?嘗試在Dependency Walker或類似文件中打開你的二進制文件,看看是否也顯示任何錯誤。 – Rup 2011-05-24 13:27:11

+0

依賴步行者似乎是一條偉大的道路。我確實有幾個警報。現在我唯一遇到的文件是MFC71D.dll - 獲取此文件的最快和最安全的方法是什麼? (我沒有在我的機器上)。謝謝。 – Eyal 2011-05-24 13:57:11

+1

這是來自Visual Studio 2003的MFC的調試版本。您真的不想混合MFC版本 - 您應該計算出哪個DLL包含它,然後嘗試獲取使用2005構建的DLL的新版本 - 即端口如果你有代碼,你自己。 – Rup 2011-05-24 14:08:02

回答

1

此錯誤時拋出被退回,因爲您的應用程序運行所需的DLL文件丟失。檢查您的鏈接器設置,並確保您的應用程序依賴的所有DLL都是它們應該在的位置(即與可執行文件相同的文件夾或DLL搜索路徑中的其他位置)。

+0

謝謝。這裏有兩種類型的文件 - Windows文件和我的文件。我所有的文件都在exe附近(在bin \ debug中)。我試圖用Linker> Input>「Additional Dependencies」玩一下,我的所有dll都出現在那裏 - 實際上它們顯示爲* .lib文件。如果你對我可能的下一步有更多的建議,我會很感激! – Eyal 2011-05-24 13:38:02

+1

嘗試類似http://www.dependencywalker.com/ - 它會告訴你哪個dll丟失... – Raiv 2011-05-24 13:54:17

+0

請參閱上面的Rup的註釋;試圖找出該進程無法加載的文件。 – 2011-05-24 13:55:50

2

您正在加載MFC和C運行時的版本和調試版本。可悲的是,這從來沒有奏效。您需要使用所有DLL的釋放模式或所有DLL的調試模式。

+0

+1好點 - 我以爲我自己找過那個,哦 – Rup 2011-05-24 14:56:32