这应该是一个简单的问题,但我偶然发现它。环境是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中,有一个'Debugging |工作目录'设置,默认为项目目录。虽然我复制了所有DLL,但我错过了一些配置文件。这是应用程序逻辑错误。
答案 0 :(得分:3)
使用SysInternals的Process Monitor跟踪,加载哪个DLL。
答案 1 :(得分:3)
我建议使用Dependency Walker调试依赖项问题。
您可以在静态模式或动态模式(从“配置文件”菜单)中使用它来准确诊断加载程序在运行时所执行的操作。后一种模式听起来就像你在寻找的那样。
答案 2 :(得分:0)
'向量下标超出范围'问题似乎更多来自您的代码而不是DLL依赖问题。但是,请确保引用DLL的正确版本 - Debug / Release。