【问题标题】:MS Visual C++ Runtime Library error on launch - any debugging tricks?MS Visual C++ 运行时库在启动时出错 - 任何调试技巧?
【发布时间】:2013-03-28 13:12:39
【问题描述】:

启动我的应用程序时,我收到以下错误对话框。我了解这表明加载运行时库时出现问题。问题是,我没有看到任何获取更具体信息的方法。哪个图书馆?加载时遇到的确切问题是什么?等等。系统事件查看器没有任何条目。是否有任何技巧可以准确找出它遇到错误时尝试加载的库以及具体问题是什么?


Microsoft Visual C++ Runtime Library

Runtime Error!

Program: exe path

R6034
An application has made an attempt to load the C runtime library incorrectly.
Please contact the application's support team for more information.*

我目前处理运行时库依赖项的方法是扫描安装目录,提取 .dll 和 .exe 文件的嵌入式清单,然后生成 .config 和 .2.config 文件以重定向到次要文件我随附的运行时库的版本。在过去,这总是能让事情正常进行。在这种情况下并非如此。

由于调用代码是本机 C++ 但某些 DLL 使用 .NET,这可能会有些复杂。我正在调用一个 C++ API,但实际上它最终使用了一些本身使用 .NET 的 DLL。

【问题讨论】:

    标签: c++ msvcrt


    【解决方案1】:

    使用 SysInternals Process Monitor 监控文件系统访问。过滤进程名称和操作 (CreateFile) 以查看进程找不到哪些 DLL。

    【讨论】:

    • 这最终帮助我解决了问题。事实证明,除了运行时库(CRT、MFC、...)的子目录之外,安装目录中还有一个杂散的 vc80 运行时库。摆脱这个固定它。它错误地尝试加载顶部目录中不是正确版本的那个。我通过查看它在弹出对话框之前尝试加载的最后一个 DLL 使用 Process Monitor 发现了这一点。
    【解决方案2】:

    这可能表示 msvcr*.dll 的版本错误。

    您可以尝试 Dependency Walker (http://www.dependencywalker.com/) 来了解它的链接位置。

    【讨论】:

    • 该工具是否支持清单?我记得很久以前使用依赖walker,但它似乎没有意识到清单版本的东西。不过我会看看的。
    • 看起来像我过去使用的熟悉的依赖;当然,它会告诉你某些东西依赖于哪些 DLL,但在这种情况下,我认为它可能是一个小版本冲突,需要嵌入式清单信息同意。我认为该工具的粒度不够细,无法查看嵌入式清单文件中表达的次要版本依赖信息。更不用说,这里的问题是我有大量的 DLL,我不知道是哪一个导致了问题。我想弄清楚问题到底出在哪里。
    • 嗯,dependency walker 没有这样做。它仅按文件名告诉您哪些 DLL 在模块的导入列表中。它不理解嵌入式清单中更细粒度的依赖信息,当然也不知道在运行时加载的库(非导入)。因此,虽然在某些事情上可能是一个有用的工具,但在这里却无济于事。
    【解决方案3】:

    确保您拥有尝试附加的代码的调试版本。在“调试”菜单上,选择“附加到进程”。使用 processID -

    也检查一下 -http://support.microsoft.com/kb/235434 分辨率 1

    您应该能够使用任务管理器附加到进程: 启用即时调试 (JIT): 在 Visual C++ 的“工具”菜单上,单击“选项”。 在“调试”选项卡上,确保选中“即时调试”。 运行任务管理器并选择要附加到的进程。右键单击并选择调试。

    决议 2

    运行任务管理器并获取要调试的进程的进程 ID。 在命令提示符处输入以下内容:msdev -p 这将启动 Visual C++ 并附加到指定的进程。

    【讨论】:

    • 在调试版本中从调试器 (VS2010) 运行不会出现问题。
    • 解决方案 1 和解决方案 2 以及您提供的链接只是解释了如何附加到进程以进行调试。不确定这在这里如何应用。我的问题不是如何附加调试器,我可以从调试器运行它。顺便说一句,在调试版本中不会发生该问题。我正在尝试获取有关哪个图书馆出现问题的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    相关资源
    最近更新 更多