Domanda

May be I'm missing something (Surely I do) but I don't understand a thing :

Each brand new version of Visual Studio is shipped with a particular msvcrtxx (msvcr100.dll, msvrct.dll, ...) Right. Except the fact it leads, often, to the famous "dll hell", I still don't understand why the "Windows Driver Kit" continues to produce binaries linked against the old MSVCRT.DLL !?

È stato utile?

Soluzione

Windows always ships with an old, barebones version of MSVCRT, specifically so that drivers can have some basic runtime support without having to ship their own copies of the library. It's appropriate for drivers but no for higher level user-mode applications.

Each version of VS C++ ships with newer versions of the runtime libraries because the library standards (and support for the standards) is evolving. Sometimes these evolve in a way that's not backward compatible, so you can't guarantee that an older program, compiled against an older version of the DLL will work with a newer version of the DLL. By making the files explicitly versioned, much of the so-called DLL Hell problem is avoided. (DLL Hell is really only a problem if you make bad assumptions and design bad installers, especially nowadays with side-by-side versioning, merge modules, etc.)

Apps have to redistribute copies of whichever version they require, as there is no guarantee that the libraries they depend upon will exist on the computer.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top