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
Rimuovere i collegamenti alle librerie di runtime del linguaggio C (CRT, C Run-time libraries):
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.
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.
Nella pagina Avanzate delle proprietà del progetto per Linker, immettere Main nel campo Punto di ingresso.
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).
In stdafx.h, impostare tutte le istruzioni #include come commento.Ad esempio, nelle applicazioni console:
// #include <iostream> // #include <tchar.h>
In alternativa
nelle applicazioni Windows Form:
// #include <stdlib.h> // #include <malloc.h> // #include <memory.h> // #include <tchar.h>
Per le applicazioni Windows Form, in Form1.cpp impostare come commento l'istruzione #include che fa riferimento a windows.h.Ad esempio:
// #include <windows.h>
Aggiungere il seguente codice a stdafx.h:
#ifndef __FLTUSED__ #define __FLTUSED__ extern "C" __declspec(selectany) int _fltused=1; #endif
Rimuovere tutti i tipi non gestiti:
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
Rappresenta un valore booleano.
Rappresenta un Integer senza segno a 8 bit.
Rappresenta un carattere Unicode.
Rappresenta un istante di tempo, in genere espresso come data e ora del giorno.
Rappresenta un numero decimale.
Rappresenta un numero a virgola mobile e precisione doppia.
Rappresenta un identificatore univoco globale (GUID).
Rappresenta un intero con segno a 16 bit.
Rappresenta un intero con segno a 32 bit.
Rappresenta un intero con segno a 64 bit.
Tipo specifico per la piattaforma utilizzato per rappresentare un puntatore o un handle.
Rappresenta un Signed Integer a 8 bit.
Rappresenta un numero a virgola mobile e precisione singola.
Rappresenta un intervallo di tempo.
Rappresenta un intero senza segno a 16 bit.
Rappresenta un intero senza segno a 32 bit.
Rappresenta un intero senza segno a 64 bit.
Tipo specifico per la piattaforma utilizzato per rappresentare un puntatore o un handle.
Indica un metodo che non restituisce un valore. Si dice che il tipo restituito dal metodo è void.