启动时的c++运行库错误-任何调试技巧



当启动我的应用程序,我得到下面的错误对话框。我理解这表明加载运行时库有问题。问题是,我找不到更具体的信息。哪个图书馆?它在加载时究竟遇到了什么问题?等。系统事件查看器没有它的任何条目。有没有什么技巧可以准确地找出它在遇到错误时试图加载的库以及具体问题是什么?


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。配置文件以重定向到我附带的运行时库的次要版本。在过去,这总是能让事情运转起来。在这种情况下不是这样的。

调用代码是本地c++,但有些dll使用。net,这可能会使情况变得有些复杂。我调用了一个c++ API,但在底层,它最终使用了一些本身使用。net的dll。

使用SysInternals Process Monitor监控文件系统访问。筛选进程名称和操作(CreateFile),以查看进程无法定位的dll。

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

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

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

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

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

决议2

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

最新更新