Gemischte (native und verwaltete) Assemblys

Gemischte Assemblys können sowohl nicht verwaltete Maschinenanweisungen als auch MSIL-Anweisungen enthalten. Auf diese Weise können sie von .NET-Komponenten aufgerufen und aufgerufen werden, während die Kompatibilität mit systemeigenen C++-Bibliotheken beibehalten wird. Mithilfe gemischter Assemblys können Entwickler Anwendungen mithilfe einer Mischung aus .NET- und systemeigenem C++-Code erstellen.

Beispielsweise kann eine vorhandene Bibliothek, die vollständig aus systemeigenem C++-Code besteht, zur .NET-Plattform gebracht werden, indem sie nur ein Modul mit dem Compilerschalter "/clr " kompiliert. Dieses Modul kann dann .NET-Features verwenden, bleibt aber mit dem Rest der Anwendung kompatibel. Es ist sogar möglich, zwischen verwalteter und systemeigener Kompilierung auf Funktionsbasis innerhalb derselben Datei zu entscheiden (siehe verwaltet, nicht verwaltet).

Visual C++ unterstützt nur die Generierung gemischter verwalteter Assemblys mithilfe der Compileroption "/clr ". Die Optionen "/clr:pure " und "/clr:safe compiler" sind in Visual Studio 2015 veraltet und werden in Visual Studio 2017 nicht unterstützt. Wenn Sie reine oder überprüfbare verwaltete Assemblys benötigen, empfehlen wir, diese mithilfe von C# zu erstellen.

Frühere Versionen des Microsoft C++-Compilertoolsets unterstützten die Generierung von drei unterschiedlichen Typen verwalteter Assemblys: gemischt, rein und verifizierbar. Die beiden letzteren werden in Pure and Verifiable Code (C++/CLI) behandelt.

In diesem Abschnitt

Gewusst wie: Migrieren zu /clr
Beschreibt die empfohlenen Schritte zum Einführen bzw. Aktualisieren der .NET-Funktionen in der Anwendung.

Vorgehensweise: Kompilieren von MFC- und ATL-Code mithilfe von /clr
Erläutert, wie vorhandene MFC- und ATL-Programme für die Common Language Runtime kompiliert werden können.

Initialisierung gemischter Assemblys
Beschreibt das Problem der "Ladeprogrammsperren" und die entsprechenden Lösungen.

Bibliotheksunterstützung für verschiedene Assemblys
Erläutert, wie systemeigene Bibliotheken in /clr-Kompilierungen verwendet werden.

Leistungsaspekte
Beschreibt, wie sich gemischte Assemblys und das Marshalling von Daten auf die Leistung auswirken.

Anwendungsdomänen und Visual C++
Erörtert die Visual C++-Unterstützung für Anwendungsdomänen.

Double Thunking
Erörtert, wie sich ein systemeigener Einstiegspunkt für eine verwaltete Funktion auf die Leistung auswirkt.

Vermeiden von Ausnahmen beim Herunterfahren von CLR beim Verwenden von COM-Objekten, die mit /clr erstellt wurden
Erläutert, wie Sie das ordnungsgemäße Herunterfahren einer verwalteten Anwendung sicherstellen, die ein com-Objekt verwendet, das mit "/clr" kompiliert wurde.

Vorgehensweise: Erstellen einer teilweise vertrauenswürdigen Anwendung durch Entfernen der Abhängigkeit der CRT-Bibliotheks-DLL
Erläutert, wie Eine teilweise vertrauenswürdige Common Language Runtime-Anwendung mit Visual C++ erstellt wird, indem Abhängigkeit von msvcm90.dll entfernt wird.

Weitere Informationen zu Codierungsrichtlinien für gemischte Assemblys finden Sie unter "Übersicht über verwaltete/nicht verwaltete Codeinteroperabilität".

Siehe auch