msvcrt错误

时间:2013-04-08 14:51:25

标签: windows visual-studio drivers msvcrt

可能是我遗漏了某些东西(当然是我)但我不明白:

每个全新版本的Visual Studio都附带一个特定的msvcrtxx(msvcr100.dll,msvrct.dll,...) 对。 除了经常导致着名的“dll hell”之外,我仍然不明白为什么“Windows Driver Kit”继续产生与旧的MSVCRT.DLL链接的二进制文件!?

1 个答案:

答案 0 :(得分:3)

Windows始终附带旧的,准确的MSVCRT版本,特别是这样驱动程序可以获得一些基本的运行时支持,而无需发送自己的库副本。它适用于驱动程序,但不适用于更高级别的用户模式应用程序。

每个版本的VS C ++都附带更新版本的运行时库,因为库标准(以及对标准的支持)正在不断发展。有时这些进化的方式不向后兼容,因此您无法保证针对较旧版本的DLL编译的旧程序可以使用较新版本的DLL。通过使文件显式版本化,避免了大部分所谓的DLL Hell问题。 (DLL地狱真的只是一个问题,如果你做出错误的假设并设计糟糕的安装程序,特别是现在使用并排版本控制,合并模块等。)

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