Ich habe Argumente auf beiden Seiten darüber gelesen, ob man in Visual Studio-Projekten statisch oder dynamisch mit der C-Laufzeitbibliothek verknüpfen sollte, und ich bin mir immer noch nicht ganz sicher, was ich davon halten soll.
Mein Projekt bezieht einige Bibliotheken von Drittanbietern ein (Python, HDF5, Trilinos und Microsoft MPI), die alle mit der gleichen Laufzeitbibliothek wie meine endgültige ausführbare Datei erstellt werden müssen (sonst können sie nicht miteinander verknüpft werden). Beim statischen Linken wird jede dieser Bibliotheken eine Kopie der C-Laufzeitbibliothek enthalten. Ich habe gelesen, dass dies zu Problemen führen kann, weil die endgültige ausführbare Datei mehrere Kopien der Laufzeitbibliothek enthält, von denen keine miteinander interagieren kann. Aber würde sich der Linker nicht beschweren, wenn dieselben Symbole mehrfach definiert wären?
Ich möchte die "DLL-Hölle" vermeiden, bin aber besorgt über heimtückische Fehler, die durch statisches Einbinden mehrerer Kopien der Laufzeitumgebung entstehen könnten. Lese ich die Dinge falsch?
Außerdem verwende ich Visual Studio 2005, und ich habe gelesen, dass die Service Pack 1-Laufzeitumgebung nicht abwärtskompatibel ist. Bedeutet dies, dass eine Anwendung, die ohne SP1 erstellt wurde, nicht auf einem Computer mit SP1-DLLs ausgeführt werden kann, selbst wenn sie denselben Namen haben (z. B. msvcr80.dll)?