【发布时间】:2015-12-29 12:53:34
【问题描述】:
我正在使用 Visual Studio 2015、Qt 5.5 和 OpenCV3.0 开发一个 64 位 C++ 应用程序。该应用程序在我用于在 Release 和 Debug 版本中开发的 pc 上运行良好。但是相同的应用程序只能在其他 PC 上的 Debug 中运行,并且在发布版本中我收到以下错误消息:
The application was unable to start correctly 0xc0000005, Click Ok toclose the application:
我创建了一个转储文件以使用 Visual Studio 调试器打开它,它显示在加载 opencv_imgproc300.dll 之前加载 dll 时应用程序停止。
我尝试查看事件查看器,但没有发现此错误。
有没有办法在启动时在加载dll时调试发布版本以了解问题的原因?
【问题讨论】:
-
最简单的第一步是在目标电脑上运行dependency walker并在其中打开你的exedependencywalker.com
-
您可以尝试使用 sysinternals-suite 中的 ProcessMonitor。不能保证,但它可能会显示一些有用的东西(它肯定会显示很多)。
-
我从 sysinternals 试过这个:technet.microsoft.com/en-us/sysinternals/bb963902.aspx。但它不显示丢失或损坏的 dll。对于dependencywalker,我使用Visual Studio Debugger中的Module窗口更好,它显示了所有加载的dll和加载的顺序,我觉得它更有帮助。
-
我会尝试在没有优化和调试信息 (pdb) 的情况下编译发布版本。这可以在客户端的计算机上提示您崩溃的位置...
-
我使用更好的模块窗口你确定吗? Dependency walker 有效地显示应该加载的 dll 并在找不到它们时标记它们,而模块窗口仅显示已加载的 dll (afaik) - 此外,dependency walker 是独立的,因此您可以在任何 PC 上使用它而无需安装,您可以t 用调试器来做(你需要安装 VS 或者远程调试工具)
标签: c++ debugging opencv dll startup