正在加载什么版本的C运行时库(CRT)?

时间:2011-01-21 15:25:47

标签: visual-studio windows-7 msvcrt

我怀疑可能是由于在运行Windows 7的两台计算机上加载了不同版本的CRT引起的错误。如何确定winsxs文件夹中加载了哪个版本的MSVCR90.dll?

我的程序是由另一个EXE加载的DLL。它是使用Visual Studio 2008 SP1编译的。

2 个答案:

答案 0 :(得分:4)

Al Kepp回答说,你可以使用Dependency Walker,“Depends.exe”。对于动态加载的DLL,最好的方法是在加载库时对应用程序进行概要分析。

在Dependency Walker中打开EXE,你的DLL。然后单击“配置文件 - >开始分析”。如果应用程序需要参数,您可以在打开的窗口中提供它们,否则只需单击“确定”即可启动该程序。程序打开后,以正常方式使用它,以便加载DLL。现在您的DLL已加载,您应该能够在Dependency Walker中浏览树以查看正在使用哪些版本的CRT。

如果看不到版本,请单击“C:\”按钮确保树中显示完整路径。

您还可以通过检查清单来查看应用程序或库请求的CRT版本,清单通常但不总是包含在DLL或EXE中。在Visual Studio中,单击“文件 - >打开 - >文件...”并选择EXE或DLL。打开RT_MANIFEST资源,您应该会看到一些XML,它将CRT列为依赖项和版本。

答案 1 :(得分:1)

在DLL文件中使用这些语言库的大多数应用程序仅使用Windows目录中这些DLL的最新版本。如果由于某种原因需要某些特定版本,最简单的方法就是将这些正确的文件放在与exe相同的目录中。

您可以使用Dependency Walker应用程序查看在启动时将哪些DLL文件加载到您的进程中。您可以从Microsoft站点免费下载。