如何跟踪使用过的DLL(是不是所谓的DLL地狱?)

How to trace used DLL (is it so-called DLL hell ?)

本文关键字:DLL 是不是 地狱 所谓 何跟踪 跟踪      更新时间:2023-10-16

这应该是一个简单的问题,但我确实被绊倒了。环境是Windows 7上的Visual Studio 2008,机器上还安装了vs2010, vs2012。(我必须安装几个VS,因为不同的项目使用不同的版本)

我有一个简单的应用程序,使用了一些第三方dll。1).当应用程序从Vs启动时,它是OK的

2)。当我复制dll来执行文件并从资源管理器中启动它时,应用程序在c++库上崩溃了

类似:计划:xxx.exe文件目录:c:program filesmicrosoft visual studio 9.0vcincludevector线:779表达式:vector下标超出范围

3)。我打开命令行,在PATH环境变量前添加"Visual Studio 9.0"answers"Visual Studio 9.0vcbin",然后启动应用程序,它也崩溃了。

我已经附加到手动启动/崩溃的进程,并将其与Vs IDE启动的模块和PATH环境的进程进行比较,似乎是一样的....我很沮丧。

任何建议吗?提前感谢。


我刚才才发现原因。在Visual Studio中,有一个"调试|工作目录"设置,默认为项目目录。虽然我复制了所有的dll,但是我漏掉了一些配置文件。应用逻辑错误

使用SysInternals的进程监视器来跟踪,哪个DLL被加载了

我建议使用Dependency Walker来调试依赖项问题。

您可以在静态模式或动态模式(从Profile菜单)下使用它来准确诊断加载器在运行时正在做什么。后一种模式听起来就是您要找的。

'向量下标超出范围'问题似乎更多来自您的代码,而不是DLL依赖关系问题。但是,请确保引用了正确的dll版本- Debug/Release。