FAQ C++/CLI et VC++.Net
FAQ C++/CLI et VC++.NetConsultez toutes les FAQ
Nombre d'auteurs : 29, nombre de questions : 248, création le 22 février 2013
Il s'agit du mode No Common Language Runtime support.
Ce mode (sans option /clr) est, vous l'aurez compris, le mode classique qui ne permet pas d'utiliser les extensions managées du framework .net. Le compilateur génère uniquement du langage machine dans ce mode là.
Autrement dit, le compilateur va générer un exécutable Win32 classique, indépendant de .Net qui ne pourra donc pas accéder aux fonctions des bibliothèques du framework .Net.
Il s'agit du mode Common Language Runtime Support.
Cette option /clr permet de compiler du code C++ dans un mode mixte. C'est à dire que nous pourrons faire cohabiter du code natif avec du code managé. Le compilateur génère alors du MSIL. A partir du moment où on utilise un mode de compilation qui utilise /clr, le compilateur génère uniquement du MSIL.
Plus précisément, il pourra générer du langage machine lorsqu'il ne saura pas générer de MSIL, mais il génère prioritairement du MSIL.
La principale force de ce mode mixte est ce qu'on appelle IJW (It Just Work). Ce concept représente la capacité du compilateur à créer un exécutable "managé" à partir d'une application non managée.
Il s'agit du mode Pure MSIL Common Language Runtime Support.
On utilise /clr:pure lorsque l'on n'utilise aucune classe non managée dans son application. Ce mode empêche la compilation de code natif mais autorise l'écriture de code qui dérogerait aux règles du CLS. Ce mode ne permet pas d'utiliser la technologie IJW.
Un des avantages de /clr:pure est que le code est sûr et possédant des performances meilleures qu'avec /clr uniquement. En effet, les assemblys purs contiennent uniquement du MSIL, il n'y a pas de fonctions natives et, par conséquent, aucune transition managée/non managée n'est nécessaire (hors appels P/Invoke).
Il s'agit du mode Safe MSIL Common Language Runtime Support.
Le mode /clr:safe génère des assemblys vérifiables, en se conformant aux exigences du CLS qui permettent au Common Language Runtime (CLR) de garantir que le code ne viole aucun paramètre de sécurité actuel.
Sachez dès à présent que les futures versions de Windows exigeront de plus en plus que les composants et les applications soient vérifiables ; donc commencer à écrire ses assemblys en mode /clr:safe est une bonne idée. (Par contre, cela rend impossible l'interopérabilité).
Il s'agit du mode Common Language Runtime Support, Old Syntax .
Le mode /clr:oldsyntax est utilisé pour avoir une compatibilité avec les extensions managées du framework 1.x. Il est utile pour migrer en douceur son code pour se conformer à la syntaxe du framework 2.0. Cette syntaxe indigeste est à bannir au plus vite et à remplacer avantageusement par l'utilisation du C++/CLI.