/clr
(Compilation pour le Common Language Runtime)
Permet aux applications et aux composants d’utiliser les fonctionnalités du common language runtime (CLR) et active la compilation C++/CLI.
Syntaxe
/clr
[:
options]
Arguments
options
Un ou plusieurs des arguments séparés par des virgules suivants.
aucun
Sans option,
/clr
crée des métadonnées pour le composant. Les métadonnées peuvent être consommées par d’autres applications CLR et permettent au composant de consommer des types et des données dans les métadonnées d’autres composants CLR. Pour plus d’informations, consultez Assemblys mixtes (natif et managé).
netcore
disponible à partir de Visual Studio 2019 version 16,4,
/clr:netcore
crée des métadonnées et du code pour le composant à l’aide de la dernière version de .net framework multiplateforme, également connue sous le nom de .net Core. Les métadonnées peuvent être consommées par d’autres applications .NET Core. Et, l’option permet au composant de consommer des types et des données dans les métadonnées d’autres composants .NET Core.
nostdlib
Indique au compilateur d’ignorer le répertoire par défaut
\clr
. Le compilateur génère des erreurs si vous incluez plusieurs versions d’une DLL, telles que System.dll. Cette option vous permet de spécifier l’infrastructure spécifique à utiliser pendant la compilation.pure
/clr:pure
est déconseillé. L’option est supprimée dans Visual Studio 2017 et ultérieur. Nous vous recommandons de porter vers C# du code devant être écrit en MSIL pur.safe
/clr:safe
est déconseillé. L’option est supprimée dans Visual Studio 2017 et ultérieur. Nous vous recommandons de porter sur C# du code devant être écrit en MSIL sécurisé.noAssembly
/clr:noAssembly
est déconseillé. Utilisez à la place (créer un module MSIL)./LN
Indique au compilateur de ne pas insérer de manifeste d’assembly dans le fichier de sortie. Par défaut, l'
noAssembly
option n’est pas appliquée.Un programme managé qui n’a pas de métadonnées d’assembly dans le manifeste est appelé module. L'
noAssembly
option peut être utilisée uniquement pour produire un module. Si vous compilez à l’aide/c
de et/clr:noAssembly
, spécifiez l'/NOASSEMBLY
option dans la phase de l’éditeur de liens pour créer un module.avant le Visual Studio 2005,
/clr:noAssembly
obligatoire/LD
./LD
est désormais implicite lorsque vous spécifiez/clr:noAssembly
.initialAppDomain
initialAppDomain
est obsolète. Permet à une application C++/CLI de s’exécuter sur la version 1 du CLR. une application compilée à l’aideinitialAppDomain
de ne doit pas être utilisée par une application qui utilise ASP.NET, car elle n’est pas prise en charge dans la version 1 du CLR.
Notes
Le code managé est du code qui peut être inspecté et géré par le CLR. Le code managé peut accéder aux objets managés. Pour plus d’informations, consultez /clr
restrictions.
Pour plus d’informations sur le développement d’applications qui définissent et utilisent des types managés en C++, consultez extensions de composant pour les plateformes Runtime.
Une application compilée à l’aide /clr
de peut ou ne peut pas contenir de données managées.
Pour activer le débogage sur une application managée, consultez /ASSEMBLYDEBUG
(Add DebuggableAttribute).
Seuls les types CLR sont instanciés sur le tas récupéré par le garbage collector. Pour plus d’informations, consultez Classes et structs. Pour compiler une fonction en code natif, utilisez le pragma unmanaged
. Pour plus d’informations , consultez managed
unmanaged
.
Par défaut, /clr
n’est pas en vigueur. Lorsque /clr
est en vigueur, /MD
est également activé. Pour plus d’informations, consultez /MD
, /MT
, /LD
(utilisez Run-Time bibliothèque). /MD
garantit que les versions multithread, liées de manière dynamique, des routines d’exécution sont sélectionnées à partir des fichiers d’en-tête standard. Le multithreading est requis pour la programmation managée, car le garbage collector CLR exécute les finaliseurs dans un thread auxiliaire.
Si vous compilez à l’aide /c
de, vous pouvez spécifier le type CLR du fichier de sortie résultant à l’aide de l’option de l' /CLRIMAGETYPE
éditeur de liens.
/clr
implique /EHa
, et aucune autre /EH
option n’est prise en charge pour /clr
. Pour plus d’informations, consultez /EH
(modèle de gestion des exceptions).
Pour plus d’informations sur la façon de déterminer le type d’image CLR d’un fichier, consultez /CLRHEADER
.
Tous les modules passés à un appel donné de l’éditeur de liens doivent être compilés à l’aide de la même option du compilateur de la bibliothèque Runtime ( /MD
ou /LD
).
Utilisez l’option de l' /ASSEMBLYRESOURCE
éditeur de liens pour incorporer une ressource dans un assembly. /DELAYSIGN
les options, /KEYCONTAINER
et de /KEYFILE
l’éditeur de liens vous permettent également de personnaliser la façon dont un assembly est créé.
Lorsque /clr
est utilisé, le _MANAGED
symbole est défini sur 1. Pour plus d’informations, consultez macros prédéfinies.
Les variables globales dans un fichier objet natif sont initialisées en premier (pendant DllMain
si l’exécutable est une dll), puis les variables globales de la section managée sont initialisées (avant l’exécution de tout code managé). #pragma init_seg
affecte uniquement l’ordre d’initialisation dans les catégories managées et non managées.
Métadonnées et classes sans nom
Les classes sans nom apparaissent dans les métadonnées sous des noms tels que $UnnamedClass$<crc-of-current-file-name>$<index>$
, où <index>
est un nombre séquentiel des classes sans nom dans la compilation. Ainsi, l'exemple de code suivant génère une classe sans nom dans les métadonnées.
// clr_unnamed_class.cpp
// compile by using: /clr /LD
class {} x;
Utilisez ildasm.exe pour afficher les métadonnées.
Pour définir cette option du compilateur dans l'environnement de développement Visual Studio
Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d’informations, consultez Définir le compilateur C++ et les propriétés de build dans Visual Studio.
Définissez la liste déroulante configuration sur toutes les configurations, puis définissez la liste déroulante plateforme sur toutes les plateformes.
Sélectionnez la page Propriétés> de configurationC/C++>général .
Modifiez la propriété prise en charge du Common Language Runtime . Choisissez OK pour enregistrer vos modifications.
Notes
dans l’IDE Visual Studio, l' /clr
option de compilateur peut être définie individuellement dans la page propriétés> de ConfigurationC/C++>général de la boîte de dialogue Pages de propriétés. Toutefois, nous vous recommandons d’utiliser un modèle CLR pour créer votre projet. Il définit toutes les propriétés requises pour la création réussie d’un composant CLR. Une autre façon de définir ces propriétés consiste à utiliser la propriété prise en charge du Common Language Runtime dans la page Propriétés>avancées de la configuration de la boîte de dialogue pages de propriétés. Cette propriété définit toutes les autres options d’outils liées au CLR à la fois.
Pour définir cette option du compilateur par programmation
- Consultez CompileAsManaged.
Voir aussi
Options du compilateur MSVC
syntaxe de Command-Line du compilateur MSVC