DBGHelp.dll 导致在调试版本中加载 msvcrt.dll
我的应用程序使用 VC6 sp6 编译,使用 DBGHelp.lib 获取堆栈信息。代码在调试和发布编译中是相似的。 问题在于,执行调试版本时,DBGHelp.dll 会加载 msvcrt.dll(发布版本)。无论如何,msvcrtd.dll 已经被我的调试链接加载了。 所以我最终在调试版本的进程中同时拥有 msvcrtd.dll 和 msvcrt.dll 。 dsp设置为加载默认库,而msvcrt(d).lib根本没有直接提及。 如果我取出使用 DBGHelp.dll 的代码并从 dsp 链接列表中删除 DBGHelp.lib,则不会加载 msvcrt.dll。
我该如何解决这个问题?
我的调试执行中只需要 msvcrtd.dll。
是否有用于调试的特殊版本的 DBGHelp.dll(将使用 msvcrtd.dll)?
My application compiles with VC6 sp6, uses DBGHelp.lib to get stack information. The code is simmilar in debug and release compilations.
The problem is that when executing the debug version, DBGHelp.dll loads msvcrt.dll (the release version). msvcrtd.dll is already loaded by my debug link anyway.
So I end up having both msvcrtd.dll and msvcrt.dll in the process in debug version.
The dsp is set to load default libraries, and msvcrt(d).lib are not mentioned directly at all.
If I take out the code that uses DBGHelp.dll and remove DBGHelp.lib from the dsp link list, msvcrt.dll is not loaded.
How do I fix this?
I need to have only msvcrtd.dll in my debug execution.
Is there a special version of DBGHelp.dll for debug (that would use msvcrtd.dll)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
同时加载 MSVCRT.LIB 和 MSVCRTD.DLL 有什么问题?无论如何,这只是在您的调试版本中,我想,正如您在问题中似乎注意到的那样。
我不认为你真的想开始搞乱调试操作系统 DLL - 这就是 DBGHELP.DLL - 例如,这并不比让你的应用程序加载调试 Kernel32.dll 更可取。
What is the problem with having both MSVCRT.LIB and MSVCRTD.DLL loaded? This is only in your Debug build anyway, I would have thought, as you seem to note in the question.
I don't think you really want to start messing around with Debug OS DLLs - that's what DBGHELP.DLL is - this is no more desirable than having your app load up a Debug Kernel32.dll, for example.