1

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


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。

4

3 回答 3

3

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

于 2013-03-28T14:23:36.067 回答
1

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

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

于 2013-03-28T13:16:53.500 回答
1

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

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

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

决议 2

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

于 2013-03-28T13:22:04.820 回答