Code pur et vérifiable (C++/CLI)
Pour la programmation .NET, Visual C++ dans Visual Studio 2017 prend en charge la création d’assemblys mixtes à l’aide de l’option du compilateur /clr (Compilation Common Language Runtime). Les options /clr :pure et clr :safe sont déconseillées dans Visual Studio 2015 et non prises en charge dans Visual Studio 2017. Si votre code doit être sûr ou vérifiable, nous vous recommandons de le porter vers C#.
Mixte (/clr)
Les assemblys mixtes (compilés avec /clr), contiennent à la fois des composants non managés et managés, ce qui leur permet d’utiliser des fonctionnalités .NET, mais contiennent toujours du code natif. Cela permet aux applications et aux composants d’être mis à jour pour utiliser des fonctionnalités .NET sans exiger que l’ensemble du projet soit réécrit. L’utilisation de Visual C++ pour combiner du code managé et natif de cette façon est appelée interopérabilité C++. Pour plus d’informations, consultez Assemblys mixtes (natifs et managés ) et interopérabilité native et .NET.
Les appels effectués à partir d’assemblys managés vers des DLL natives via P/Invoke sont compilés, mais peuvent échouer au moment de l’exécution en fonction des paramètres de sécurité.
Il existe un scénario de codage qui transmet le compilateur, mais qui entraîne un assembly inverifiable : appeler une fonction virtuelle via une instance d’objet à l’aide de l’opérateur de résolution d’étendue. Par exemple : MyObj -> A::VirtualFunction();
.