Conversion de projets du mode mixte en langage intermédiaire pur
Tous les projets CLR Visual C++ sont liés par défaut aux bibliothèques Runtime C.Par conséquent, ces projets sont classés comme applications en mode mixte, car ils contiennent à la fois du code natif et du code ayant pour cible le Common Language Runtime (code managé).Ils sont compilés en langage intermédiaire (IL, Intermediate Language), également appelé MSIL (Microsoft Intermediate Language).
Pour convertir votre application en mode mixte en langage intermédiaire pur
Supprimez les liens aux C Run-Time Libraries (CRT) :
Dans le fichier .cpp définissant le point d'entrée de votre application, modifiez le point d'entrée en Main().L'utilisation de Main() indique que votre projet n'établit pas de liaison avec le CRT.
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet et sélectionnez Propriétés dans le menu contextuel afin d'ouvrir les pages de propriétés de l'application.
Dans la page de propriétés du projet Avancé pour l'Éditeur de liens, sélectionnez le champ Point d'entrée et saisissez Main.
Pour les applications console, dans la page de propriétés du projet Système pour l'Éditeur de liens, sélectionnez le champ Sous-système et changez son contenu en Console (/SUBSYSTEM:CONSOLE).
[!REMARQUE]
Il n'est pas nécessaire de définir cette propriété pour les applications Windows Forms parce que le champ Sous-système contient par défaut la valeur Windows (/SUBSYSTEM:WINDOWS).
Dans stdafx.h, transformez en commentaires toutes les instructions #include.Par exemple, dans les applications console :
// #include <iostream> // #include <tchar.h>
ou
Par exemple, dans les applications Windows Forms :
// #include <stdlib.h> // #include <malloc.h> // #include <memory.h> // #include <tchar.h>
Pour les applications Windows Forms, dans Form1.cpp, commentez l'instruction #include qui référence windows.h.Par exemple :
// #include <windows.h>
Ajoutez le code suivant à stdafx.h :
#ifndef __FLTUSED__ #define __FLTUSED__ extern "C" __declspec(selectany) int _fltused=1; #endif
Supprimez tous les types non managés :
Le cas échéant, remplacez les types non managés par des références à des structures de l'espace de noms System.Les types managés courants sont répertoriés dans le tableau suivant :
Structure
Description
Représente une valeur booléenne.
Représente un entier non signé 8 bits.
Représente un caractère Unicode.
Représente un instant, généralement exprimé sous la forme d'une date ou d'une heure.
Représente un nombre décimal.
Représente un nombre à virgule flottante double précision.
Représente un GUID (identificateur global unique).
Représente un entier signé 16 bits.
Représente un entier signé 32 bits.
Représente un entier signé 64 bits.
Type spécifique à la plateforme, utilisé pour représenter un pointeur ou un handle.
Représente un entier 8 bits signé.
Représente un nombre à virgule flottante simple précision.
Représente un intervalle de temps.
Représente un entier non signé 16 bits.
Représente un entier non signé 32 bits.
Représente un entier non signé 64 bits.
Type spécifique à la plateforme, utilisé pour représenter un pointeur ou un handle.
Indique une méthode qui ne retourne pas de valeur ; autrement dit, cette méthode a le type de retour void.