Conversione di progetti da modalità mista a linguaggio intermedio (IL) puro

Tutti i progetti CLR di Visual C++ sono collegati per impostazione predefinita alle librerie di runtime del linguaggio C. Di conseguenza, sono classificati come applicazioni in modalità mista poiché combinano codice nativo con codice che si avvale di Common Language Runtime (codice gestito). Al momento della compilazione, vengono compilati nel linguaggio intermedio (IL, Intermediate Language) denominato MSIL (Microsoft Intermediate Language).

Per convertire un'applicazione dalla modalità mista a IL puro

  1. Rimuovere i collegamenti alle librerie di runtime del linguaggio C (CRT, C Run-time libraries):

    1. Nel file CPP che definisce il punto di ingresso dell'applicazione modificare il punto di ingresso in Main(). L'utilizzo di Main() indica che il progetto non viene collegato a CRT.

    2. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Proprietà dal menu di scelta rapida per aprire le pagine delle proprietà dell'applicazione.

    3. Nella pagina Avanzate delle proprietà del progetto per Linker, immettere Main nel campo Punto di ingresso.

    4. Per le applicazioni console, nella pagina Sistema delle proprietà del progetto per il Linker, modificare il campo Sottosistema in Console (/SUBSYSTEM:CONSOLE).

      Nota

      Per le applicazioni Windows Form non è necessario impostare questa proprietà, poiché l'impostazione predefinita del campo Sottosistema è Windows (/SUBSYSTEM:WINDOWS).

    5. In stdafx.h, impostare tutte le istruzioni #include come commento. Ad esempio, nelle applicazioni console:

      // #include <iostream>
      // #include <tchar.h>
      

      -oppure-

      nelle applicazioni Windows Form:

      // #include <stdlib.h>
      // #include <malloc.h>
      // #include <memory.h>
      // #include <tchar.h>
      
    6. Per le applicazioni Windows Form, in Form1.cpp impostare come commento l'istruzione #include che fa riferimento a windows.h. Di seguito è riportato un esempio:

      // #include <windows.h>
      
  2. Aggiungere il seguente codice a stdafx.h:

    #ifndef __FLTUSED__
    #define __FLTUSED__
       extern "C" __declspec(selectany) int _fltused=1;
    #endif
    
  3. Rimuovere tutti i tipi non gestiti:

    1. Dove appropriato, sostituire tutti i tipi non gestiti con riferimenti a strutture dello spazio dei nomi System. Nella tabella che segue vengono riportati alcuni tra i tipi gestiti più comuni.

      Struttura

      Descrizione

      Boolean

      Rappresenta un valore booleano.

      Byte

      Rappresenta un Integer senza segno a 8 bit.

      Char

      Rappresenta un carattere Unicode.

      DateTime

      Rappresenta un istante di tempo, in genere espresso come data e ora del giorno.

      Decimal

      Rappresenta un numero decimale.

      Double

      Rappresenta un numero a virgola mobile e precisione doppia.

      Guid

      Rappresenta un identificatore univoco globale (GUID).

      Int16

      Rappresenta un intero con segno a 16 bit.

      Int32

      Rappresenta un intero con segno a 32 bit.

      Int64

      Rappresenta un intero con segno a 64 bit.

      IntPtr

      Tipo specifico per la piattaforma utilizzato per rappresentare un puntatore o un handle.

      SByte

      Rappresenta un Signed Integer a 8 bit.

      Single

      Rappresenta un numero a virgola mobile e precisione singola.

      TimeSpan

      Rappresenta un intervallo di tempo.

      UInt16

      Rappresenta un intero senza segno a 16 bit.

      UInt32

      Rappresenta un intero senza segno a 32 bit.

      UInt64

      Rappresenta un intero senza segno a 64 bit.

      UIntPtr

      Tipo specifico per la piattaforma utilizzato per rappresentare un puntatore o un handle.

      Un tipo void.

      Indica un metodo che non restituisce un valore. Si dice che il tipo restituito dal metodo è void.