2011-05-24 108 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