Assemblys mixtes (natifs et managés)

Les assemblys mixtes peuvent contenir des instructions d’ordinateur non managées et des instructions MSIL. Cela leur permet d’appeler et d’être appelés par les composants .NET, tout en conservant la compatibilité avec les bibliothèques C++ natives. À l’aide d’assemblys mixtes, les développeurs peuvent créer des applications à l’aide d’un mélange de code .NET et C++ natif.

Par exemple, une bibliothèque existante composée entièrement de code C++ natif peut être apportée à la plateforme .NET en recompilant un seul module avec le commutateur du compilateur /clr . Ce module est ensuite en mesure d’utiliser des fonctionnalités .NET, mais reste compatible avec le reste de l’application. Il est même possible de décider entre la compilation managée et native sur une base de fonction par fonction dans le même fichier (voir managé, non managé).

Visual C++ prend uniquement en charge la génération d’assemblys managés mixtes à l’aide de l’option du compilateur /clr . Les options du compilateur /clr :pure et /clr :safe sont déconseillées dans Visual Studio 2015 et non prises en charge dans Visual Studio 2017. Si vous avez besoin d’assemblys managés purs ou vérifiables, nous vous recommandons de les créer à l’aide de C#.

Les versions antérieures de l’ensemble d’outils du compilateur Microsoft C++ ont pris en charge la génération de trois types distincts d’assemblys managés : mixtes, purs et vérifiables. Ces deux derniers sont abordés dans le code pur et vérifiable (C++/CLI).

Contenu de cette section

Procédure : migrer vers /clr
Décrit les étapes recommandées pour l’introduction ou la mise à niveau de fonctionnalités .NET dans votre application.

Guide pratique pour compiler le code MFC et ATL à l’aide de /clr
Explique comment compiler des programmes MFC et ATL existants pour cibler le Common Language Runtime.

Initialisation d’assemblys mixtes
Décrit le problème et les solutions de « verrouillage du chargeur ».

Prise en charge de bibliothèque pour les assemblys mixtes
Explique comment utiliser des bibliothèques natives dans les compilations /clr .

Considérations relatives aux performances
Décrit les implications en matière de performances des assemblys mixtes et du marshaling de données.

Domaines d’application et Visual C++
Décrit la prise en charge de Visual C++ pour les domaines d’application.

Double Thunking
Décrit les implications en matière de performances d’un point d’entrée natif pour une fonction managée.

Éviter les exceptions sur l’arrêt CLR lors de la consommation d’objets COM générés avec /clr
Explique comment garantir l’arrêt approprié d’une application managée qui consomme un objet COM compilé avec /clr.

Guide pratique pour créer une application partiellement approuvée en supprimant la dépendance de la DLL de la bibliothèque CRT
Explique comment créer une application Common Language Runtime partiellement approuvée à l’aide de Visual C++ en supprimant la dépendance sur msvcm90.dll.

Pour plus d’informations sur les instructions de codage pour les assemblys mixtes, consultez Une vue d’ensemble de l’interopérabilité du code managé/non managé.

Voir aussi