Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per impostazione predefinita, tutti i progetti CLR di Visual C++ sono collegati alle librerie di runtime C. Di conseguenza, questi progetti vengono classificati come applicazioni in modalità mista, perché combinano codice nativo con codice destinato a Common Language Runtime (codice gestito). Quando vengono compilati, vengono compilati in linguaggio intermedio (IL), noto anche come MSIL (Microsoft Intermediate Language).
Importante
Visual Studio 2015 deprecato e Visual Studio 2017 non supporta più la creazione di /clr:pure
codice o /clr:safe
per le applicazioni CLR. Se sono necessari assembly puri o sicuri, è consigliabile convertire l'applicazione in C#.
Se si usa una versione precedente del set di strumenti del compilatore Microsoft C++ che supporta /clr:pure
o /clr:safe
, è possibile usare questa procedura per convertire il codice in MSIL puro:
Per convertire l'applicazione in modalità mista in un linguaggio intermedio puro
Rimuovere i collegamenti alle librerie di runtime C (CRT):
Nel file di .cpp che definisce il punto di ingresso dell'applicazione modificare il punto di ingresso in
Main()
. UsingMain()
indica che il progetto non è 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à per l'applicazione.
Nella pagina Delle proprietà avanzate del progetto per linker selezionare il punto di ingresso e quindi immettere Main in questo campo.
Per le applicazioni console, nella pagina delle proprietà Del progetto di sistema per Linker selezionare il campo SubSystem e modificarlo in
Console (/SUBSYSTEM:CONSOLE)
.Nota
Non è necessario impostare questa proprietà per le applicazioni Windows Form perché il campo SubSystem è impostato su
Windows (/SUBSYSTEM:WINDOWS)
per impostazione predefinita.In
stdafx.h
impostare come commento tutte le#include
istruzioni. Ad esempio, nelle applicazioni console:// #include <iostream> // #include <tchar.h>
oppure
Ad esempio, nelle applicazioni Windows Form:
// #include <stdlib.h> // #include <malloc.h> // #include <memory.h> // #include <tchar.h>
Per Windows Form applicazioni, in
Form1.cpp
impostare come commento l'istruzione#include
che fawindows.h
riferimento a . Ad esempio:// #include <windows.h>
Aggiungere il codice seguente a
stdafx.h
:#ifndef __FLTUSED__ #define __FLTUSED__ extern "C" __declspec(selectany) int _fltused=1; #endif
Rimuovere tutti i tipi non gestiti:
Se appropriato, sostituire i tipi non gestiti con riferimenti alle strutture dello spazio dei
System
nomi. I tipi gestiti comuni sono elencati nella tabella seguente:Struttura Descrizione Boolean
Rappresenta un valore booleano. Byte
Rappresenta un numero intero 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 a 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 usato per rappresentare un puntatore o un handle. SByte
Rappresenta un intero con segno a 8 bit. Single
Rappresenta un numero a virgola mobile a 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 usato per rappresentare un puntatore o un handle. Void
Indica un metodo che non restituisce un valore; ovvero, il metodo ha il tipo restituito void
.