FAQ C++/CLI et VC++.NetConsultez toutes les FAQ

Nombre d'auteurs : 29, nombre de questions : 248, création le 22 février 2013 

 
OuvrirSommaireIDEModes de compilation

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.

Créé le 9 mai 2006  par nico-pyright(c)

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.

Image non disponible
Mis à jour le 27 mars 2007  par nico-pyright(c)

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).

Créé le 9 mai 2006  par nico-pyright(c)

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é).

Créé le 9 mai 2006  par nico-pyright(c)

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.

Créé le 9 mai 2006  par nico-pyright(c)
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006-2007 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.