Es gibt nicht wirklich eine "systemweite libc" in Windows.
In * nix gibt es im Allgemeinen einen Compiler, einen Linker und mit ihnen ein wohldefiniertes Objektdateiformat, Aufrufkonvention und Name mangling spec. Dieses Zeug kommt normalerweise mit dem Betriebssystem. Der semi-spezielle Status des Compilers (plus eine Betonung der Portabilität über verschiedene * nixes) bedeutet, dass bestimmte Sachen erwartet sein können, und so benannt und/oder versioniert werden, dass Programme es leicht finden und verwenden können .
In Windows sind die Dinge mehr fragmentiert. Ein Compiler kommt nicht mit dem Betriebssystem, also müssen die Leute ihre eigenen bekommen.Jeder Compiler stellt seine eigene CRT bereit, die dieselben Funktionen wie MSVCRT haben kann oder nicht. Es gibt auch keine One True Spec für das Aufrufen von Konventionen oder wie Namen in den Bibliotheken angezeigt werden sollen. Daher können verschiedene Compiler (mit unterschiedlichen Methoden) Schwierigkeiten haben, Funktionen in der Bibliothek zu finden.
BTW, der Name sollte hier ein Hinweis sein; MSVCRT ist die Abkürzung für "MicroSoft Visual C++ RunTime". Es ist nicht wirklich eine "systemweite" Bibliothek in der gleichen Art und Weise wie beispielsweise kernel32
- es ist nur die Laufzeitbibliothek, die von MS-Compilern verwendet wird, die sie vermutlich beim Erstellen von Windows verwendet haben. Andere Compiler könnten sich möglicherweise dagegen verbünden, aber (1) könnte es Lizenzprobleme geben; und (2) die Compiler würden ihren Code an MS binden - was bedeutet, dass (2a) sie keine Möglichkeit mehr hätten, die Laufzeit zu verbessern oder Fehler zu beheben, ohne zu hoffen, dass MS sie beheben wird; und (2b) wenn MS entscheidet, was in der RTL geändert wird (was sie nach Belieben tun können und wahrscheinlich in jeder neuen Version von VC++ haben) oder wie die Namen erscheinen, können diese anderen Programme brechen.
Scheint, dass die MS-Lösung die Compiler + c-Laufzeitbibliotheksversion miteinander koppelt. –
Ich dachte "MSVCRT" wurde jetzt nur als Teil von Windows veröffentlicht, und dass die Laufzeiten für neue Versionen von VC neue DLLNAMEs hatten? – SamB