Dela via


Blandade (ursprungliga och hanterade) sammansättningar

Blandade sammansättningar kan innehålla både ohanterade datorinstruktioner och MSIL-instruktioner. På så sätt kan de anropa och anropas av .NET-komponenter, samtidigt som de behåller kompatibiliteten med interna C++-bibliotek. Med hjälp av blandade sammansättningar kan utvecklare skapa program med hjälp av en blandning av .NET och inbyggd C++-kod.

Ett befintligt bibliotek som helt består av inbyggd C++-kod kan till exempel överföras till .NET-plattformen genom att bara kompilera om en modul med växeln /clr compiler. Den här modulen kan sedan använda .NET-funktioner, men förblir kompatibel med resten av programmet. Det går till och med att välja mellan hanterad och intern kompilering baserat på funktion efter funktion i samma fil (se hanterad, ohanterad).

Visual C++ stöder endast generering av blandade hanterade sammansättningar med hjälp av kompilatoralternativet /clr . Alternativen /clr:pure och /clr:safe compiler är inaktuella i Visual Studio 2015 och stöds inte i Visual Studio 2017. Om du behöver rena eller verifierbara hanterade sammansättningar rekommenderar vi att du skapar dem med hjälp av C#.

Tidigare versioner av Microsoft C++-kompileringsverktygen stödde genereringen av tre olika typer av hanterade sammansättningar: blandade, rena och verifierbara. De två sistnämnda beskrivs i Pure and Verifiable Code (C++/CLI).

I det här avsnittet

Gör så här: Migrera till /clr
Beskriver de rekommenderade stegen för att antingen introducera eller uppgradera .NET-funktioner i ditt program.

Gör så här: Kompilera MFC- och ATL-kod med hjälp av /clr
Beskriver hur du kompilerar befintliga MFC- och ATL-program för att rikta in sig på Common Language Runtime.

Initiering av blandade sammansättningar
Beskriver problemet med "lastningslåset" och lösningarna.

Biblioteksstöd för blandade sammansättningar
Beskriver hur du använder interna bibliotek i /clr-kompileringar .

prestandaöverväganden
Beskriver prestandakonsekvenserna av blandade sammansättningar och datamarsering.

Programdomäner och Visual C++
Diskuterar Visual C++-stöd för programdomäner.

Dubbel Thunking
Diskuterar prestandakonsekvenserna av en intern startpunkt för en hanterad funktion.

Att undvika undantag vid CLR-avstängning när du använder COM-objekt som skapats med /clr
Beskriver hur du säkerställer en korrekt avstängning av ett hanterat program som använder ett COM-objekt som kompilerats med /clr.

Anvisningar: Skapa ett delvis betrott program genom att ta bort beroendet av CRT-biblioteks-DLL:en
Beskriver hur du skapar ett delvis betrott Common Language Runtime-program med hjälp av Visual C++ genom att ta bort beroendet av msvcm90.dll.

Mer information om kodningsriktlinjer för blandade sammansättningar finns i En översikt över hanterad/ohanterad kodkompatibilitet.

Se även