2

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

我有一个简单的应用程序使用一些 3-rd 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,但我错过了一些配置文件。这是应用程序逻辑错误。

4

3 回答 3

3

使用 SysInternals 的Process Monitor来跟踪加载了哪个 DLL。

于 2013-03-04T09:45:29.343 回答
3

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

您可以在静态模式或动态模式(从 Profile 菜单中)使用它来准确诊断加载程序在运行时正在做什么。后一种模式听起来就像您正在寻找的那样。

于 2013-03-04T09:49:47.667 回答
0

“向量下标超出范围”问题似乎更多来自您的代码,而不是 DLL 依赖问题。但是,请确保引用正确版本的 DLL - 调试/发布。

于 2013-03-04T11:02:03.570 回答