启动时出现MS Visual C ++运行时库错误 - 任何调试技巧?

时间:2013-03-28 13:12:39

标签: c++ msvcrt

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


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.*

我目前处理运行时lib依赖项的方法是扫描安装目录,提取.dll和.exe文件的嵌入式清单,然后生成.config和.2.config文件以重定向到未成年人我随附的运行时库的版本。在过去,这总是让事情变得有效。在这种情况下不是这样。

这可能有点复杂,因为调用代码是本机C ++,但有些DLL使用.NET。我正在调用一个C ++ API,但它最终会使用一些自己使用.NET的DLL。

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

您可以尝试使用Dependency Walker(http://www.dependencywalker.com/)来查找链接的位置。

答案 2 :(得分:1)

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

同时检查一下 - http://support.microsoft.com/kb/235434 决议1

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

决议2

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