繁体   English   中英

如何跟踪用过的DLL(是所谓的DLL hell吗?)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM