-1

可能是我错过了一些东西(我当然会)但我什么都不明白:

每个全新版本的 Visual Studio 都附带一个特定的 msvcrtxx(msvcr100.dll、msvrct.dll、...)对。除了它经常导致著名的“dll 地狱”这一事实外,我仍然不明白为什么“Windows 驱动程序工具包”继续生成与旧的 MSVCRT.DLL 链接的二进制文件!?

4

1 回答 1

3

Windows 总是附带一个旧的准系统版本的 MSVCRT,特别是这样驱动程序就可以拥有一些基本的运行时支持,而不必发布自己的库副本。它适用于驱动程序,但不适用于更高级别的用户模式应用程序。

每个版本的 VS C++ 都附带更新版本的运行时库,因为库标准(以及对标准的支持)正在发展。有时它们以一种不向后兼容的方式发展,因此您不能保证针对旧版本 DLL 编译的旧程序可以与新版本 DLL 一起使用。通过对文件进行显式版本控制,可以避免许多所谓的 DLL Hell 问题。(如果您做出错误的假设并设计了错误的安装程序,DLL Hell 才是真正的问题,尤其是在使用并行版本控制、合并模块等的今天。)

应用程序必须重新分发它们需要的任何版本的副本,因为不能保证它们所依赖的库会存在于计算机上。

于 2013-04-08T16:59:24.757 回答