visual-studio - 正在加载哪个版本的 C 运行时库 (CRT)?

标签 visual-studio windows-7 msvcrt

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

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

最佳答案

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

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

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

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

关于visual-studio - 正在加载哪个版本的 C 运行时库 (CRT)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4760491/

相关文章:

c++ - VS : unexpected optimization behavior with _BitScanReverse64 intrinsic

excel - Excel 2003 中的工作代码在 Windows 7 中引发运行时错误

c++ - 代码可以在 MSVC 上编译,但不能在 GCC 上编译

c++ - CoGetClassObject 在 ATL 项目中给出了许多 First-chance 异常。我应该担心吗?

c# - .Net Framework 项目上的 Visual Studio 代码分析

c# - 如何使用 C# 发送原始以太网数据包?

c++ - 按创建时间搜索文件

c++ - DLL 中的全局构造函数和 MSVCRT

c - MinGW 的 msvcrt 替代品? (例如,获得符合要求的 snprintf)

visual-studio - Visual Studio - 如何在 Release模式下观察变量值