2013-04-03 10 views
6

Sind die dynamischen Laufzeitbibliotheken für Visual C++ (genauer gesagt 2008) heutzutage Teil des Windows-Betriebssystems? Mir ist aufgefallen, dass Sie Windows 8 zumindest nicht mehr mit Ihrer Anwendung ausliefern müssen oder der Benutzer das Redistributable-Paket von Microsoft installieren muss.Sind dynamische Visual C++ - Laufzeitbibliotheken heutzutage Teil des Windows-Betriebssystems?

Ist das wahr? Wenn ja, für welche Windows-Versionen und für welche Versionen von Visual C++ gilt dies?

+1

Übrigens, wenn Sie eine kleine Anwendung verteilen müssen, die ausgeführt werden muss, ohne etwas installieren zu müssen, haben Sie immer die Möglichkeit, statisch mit dem CRT zu verknüpfen. –

+1

Beachten Sie, dass das gleiche über die VC6 CRT gesagt wurde. Wenn Sie mit zukünftigen Windows-Versionen kompatibel bleiben möchten, sollten Sie sich heute an die Regeln halten. Microsoft kann von Zeit zu Zeit Änderungen einführen, die sich jedoch in erster Linie auf Programme auswirken, die nicht den Best Practices entsprechen. – MSalters

Antwort

4

Nein, sie waren nie Teil der Windows-Distribution. Sie selbst zu implementieren, ist eine harte Anforderung.

Es kann sicherlich scheinen, dass sie sind. Beginnend mit msvcrt.dll im system32-Verzeichnis hat es den gleichen Namen wie die C++ - Laufzeit-DLL in Visual Studio-Versionen vor VS2002 (VS6 und früher). Es ist jedoch eine private Kopie des CRT, die von Windows-ausführbaren Dateien verwendet wird. Und geschützt durch den Dateisystemschutz in Windows, der verhindert, dass alte Installer das Betriebssystem zerstören.

Es funktioniert sicherlich oft zufällig. Es gibt viele Programme, die das Microsoft CRT benötigen, so ist es nicht unwahrscheinlich, dass der Benutzer ein Installationsprogramm ausgeführt hat, bevor die DLLs installiert wurden. Natürlich können Sie sich nicht auf diesen gewöhnlichen Unfall verlassen.

Ähnlich wie für Windows 8 entspricht das vorinstallierte Microsoft.VCLibs.110-Paket dem Paket, das Sie für eine in C++ geschriebene Store-App benötigen. Aber aus dem gleichen Grund wie oben, Microsoft Store-Programme wurden auch mit VS2012 gebaut, genau wie Ihre. Was in der kommenden VS2013 passieren wird, ist momentan ein bisschen matschig, wir werden es bald wissen.

0

Meiner Meinung nach, wäre die Antwort beides sein: Ja und Nein.

  • Ja: Neuere Windows-Betriebssystem mit VC allgemein ausgeliefert Laufzeiten vorinstalliert (zusammen mit neueren Versionen der. NET Framework). Dies liegt daran, dass Microsoft das neueste/neuere Visual Studio verwendet, bevor es VS für die Öffentlichkeit (oder sogar für MSDN-Abonnenten) veröffentlicht. Wenn Sie auf diese Weise keine Anwendung (Legacy-Anwendung oder heruntergeladene Anwendung) installieren, installiert das Setup trotzdem die erforderliche VC++ - Laufzeit. Ein anderer Weg ist durch automatische Updates.
  • Nein: Falls keine der oben genannten Regeln zutrifft. Oder wenn die VC-Laufzeitumgebung mit einem neuen Service Pack oder Patch geliefert wurde. Möglicherweise haben Sie Ihre Anwendung mit einem neueren Patch/SP entwickelt, und das muss installiert werden (natürlich Side-by-Side).