Änderungen in den Visual C++ 2005-Bibliotheken
Aktualisiert: November 2007
In den folgenden Abschnitten werden Aktualisierungen und grundlegende Änderungen behandelt, die an den Bibliotheken in Visual C++ vorgenommen wurden.
In diesem Abschnitt
Allgemeine Änderungen in den Bibliotheken
Wichtige Änderungen
Im gemischten Modus werden systemeigene Konstruktoren vor verwalteten Konstruktoren aufgerufen. Bei einer einzelnen ausführbaren Datei werden die Konstruktoren aller systemeigenen globalen Objekte vor dem Konstruktor eines verwalteten globalen Objekts aufgerufen. Dies geschieht unabhängig davon, ob sich das systemeigene und das verwaltete Objekt in der gleichen Kompilierungseinheit befinden.
Aus diesem Grund werden Anwendungen, in denen die verwalteten Konstruktoren vor den systemeigenen Konstruktoren aufgerufen werden müssen, möglicherweise nicht ordnungsgemäß ausgeführt.
Bei Abhängigkeiten zwischen globalen Objekten sollten Sie sicherstellen, dass nur Abhängigkeiten von verwalteten Objekten zu systemeigenen Objekten bestehen. Um sicherzustellen, dass ein Objekt entweder verwaltet oder systemeigen ist, legen Sie es am besten in einer entsprechend erstellten Kompilierungseinheit ab.
Änderungen in den Bibliotheken zur Unterstützung der manifestbasierten Assemblygenerierung
Ab Visual C++ 2005 handelt es sich bei der C++-Standardbibliothek und den ATL-, MFC- und CRT-Bibliotheken um parallele freigegebene Assemblys mit Manifesten. Gleichermaßen sind die Einstellungen von Compiler und Linker jetzt standardmäßig für eine Manifestgenerierung mithilfe von mt.exe festgelegt. Auf diese Weise wird sichergestellt, dass alle ausführbaren Visual C++-Dateien über ein Manifest verfügen, das auf ihre Abhängigkeit von ARL, MFC und CRT verweist. Weitere Informationen finden Sie unter Visual C++ Libraries as Shared Side-by-Side Assemblies, Bereitstellung (C++) und Erstellen von isolierten Anwendungen und parallelen Assemblys (C/C++).
Informationen zum Erstellen von Projekten mithilfe von Makefiles finden Sie unter Gewusst wie: Einbetten eines Manifests in eine C/C++-Anwendung.
Bibliotheksunterstützung für gemischte Assemblys
Visual C++ 2005 unterstützt die Verwendung der C++-Standardbibliothek sowie der ATL-, MFC- und CRT-Bibliotheken als gemischte, mit /clr kompilierte Assemblys. Sie können alle vorhandenen Funktionen dieser gemischten Bibliotheken verwenden, wenn der Code sowohl aus systemeigenem als auch MSIL-basiertem __clrcall-Code besteht. Weitere Informationen finden Sie unter Gemischte (systemeigene und verwaltete) Assemblys.
Initialisierung gemischter Assemblys
Die Bibliotheksunterstützung wurde in Visual C++ 2005 geändert, um die Probleme der Ladeprogrammsperre zu lösen, die in gemischten DLLs in Visual C++ .NET und Visual C++ .NET 2003 aufgetreten sind. Es gibt jedoch immer noch eine Einschränkung, und zwar darf der DllMain-Code niemals auf die CLR zugreifen. Weitere Informationen finden Sie unter Gemischte (systemeigene und verwaltete) Assemblys.
Bibliotheken, die von der Kompilierung im pure-Modus nicht unterstützt werden
In Visual C++ 2005 werden die ATL- und MFC-Bibliotheken von der Kompilierung im pure-Modus (/clr:pure) nicht unterstützt.