[英]How to trace used DLL (is it so-called DLL hell ?)
这应该是一个简单的问题,但我确实对此感到迷惑。 环境是Windows 7上的Visual Studio 2008,该计算机还安装了vs2010,vs2012。 (我必须安装多个VS,因为各种项目使用不同的版本)
我有一个简单的应用程序,它使用一些3rd DLL。 1)。 从Vs启动应用程序后,就可以了。
2)。 当我复制DLL来执行文件并从资源管理器中启动它时,该应用程序在C ++库上崩溃了
类似于:程序:xxx.exe文件:c:\\ program files \\ microsoft visual studio 9.0 \\ vc \\ include \\ vector行:779表达式:矢量下标超出范围
3)。 我打开了一个命令行,并在PATH环境变量之前添加了“ Visual Studio 9.0 \\”和“ Visual Studio 9.0 \\ vc \\ bin”,并启动了该应用程序,它也崩溃了。
我已经附加了手动启动/崩溃的过程,并将其与针对模块和PATH环境的Vs IDE简化的过程进行了比较,这似乎是相同的...。
有什么建议吗? 提前致谢。
我刚才找到了原因。 在Visual Studio中,有一个“调试| 工作目录”设置,默认为项目目录。 尽管我复制了所有DLL,但是我错过了一些配置文件。 这是应用程序逻辑错误。
使用SysInternals的进程监视器来跟踪加载了哪个DLL。
我建议使用Dependency Walker来调试依赖关系问题。
您可以在静态模式下使用它,也可以在动态模式下(从“配置文件”菜单中使用它)来诊断诊断装载程序在运行时正在做什么。 后一种模式听起来像您想要的。
“向量下标超出范围”的问题似乎更多是源于您的代码,而不是DLL依赖关系问题。 但是,请确保引用正确版本的DLL-调试/发布。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.