Converting Projects from Mixed Mode to Pure Intermediate Language
Alle CLR-Projekte von Visual C++ sind in der Standardeinstellung mit C-Laufzeitbibliotheken verknüpft.Folglich werden diese Projekte als Anwendungen im gemischten Modus klassifiziert, da in ihnen systemeigener Code mit Code kombiniert ist, der die Common Language Runtime (verwalteten Code) einbindet.Sie werden ggf. in Intermediate Language (IL) kompiliert, die auch als Microsoft Intermediate Language (MSIL) bekannt ist.
So konvertieren Sie eine Anwendung im gemischten Modus in reine Intermediate Language
Entfernen Sie Links zu den C-Laufzeitbibliotheken (CRT):
Ändern Sie in der CPP-Datei, durch die der Einstiegspunkt der Anwendung definiert wird, den Einstiegspunkt in Main().Die Verwendung von Main() weist darauf hin, dass das Projekt nicht mit CRT verknüpft wird.
Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie im Kontextmenü Eigenschaften, um die Eigenschaftenseiten für die Anwendung zu öffnen.
Wählen Sie auf der Projekteigenschaftenseite Erweitert für den Linker das Feld Einstiegspunkt aus, und geben Sie dann in dieses Feld Main ein.
Bei Konsolenanwendungen wählen Sie auf der Projekteigenschaftenseite System für den Linker das Feld SubSystem aus und ändern es in Konsole (/SUBSYSTEM:CONSOLE).
Hinweis Diese Eigenschaft muss für Windows Forms-Anwendungen nicht festgelegt werden, da das Feld SubSystem standardmäßig auf Windows (/SUBSYSTEM:WINDOWS) festgelegt ist.
Kommentieren Sie in stdafx.h alle #include-Anweisungen aus.Beispielsweise in Konsolenanwendungen:
// #include <iostream> // #include <tchar.h>
- oder -
in Windows Forms-Anwendungen:
// #include <stdlib.h> // #include <malloc.h> // #include <memory.h> // #include <tchar.h>
Bei Windows Forms-Anwendungen kommentieren Sie in "Form1.cpp" die #include-Anweisung aus, die auf "windows.h" verweist.Beispiel:
// #include <windows.h>
Fügen Sie zu stdafx.h den folgenden Code hinzu:
#ifndef __FLTUSED__ #define __FLTUSED__ extern "C" __declspec(selectany) int _fltused=1; #endif
Entfernen Sie alle nicht verwalteten Typen:
Ersetzen Sie nicht verwaltete Typen, sofern angebracht, durch Verweise auf Strukturen aus dem System-Namespace.Gebräuchliche verwaltete Typen sind in der folgenden Tabelle aufgeführt:
Struktur
Beschreibung
Stellt einen booleschen Wert dar.
Stellt eine 8-Bit-Ganzzahl ohne Vorzeichen dar.
Stellt ein Unicode-Zeichen dar.
Stellt einen Zeitpunkt dar, der normalerweise durch Datum und Uhrzeit dargestellt wird.
Stellt eine Dezimalzahl dar.
Stellt eine Gleitkommazahl mit doppelter Genauigkeit dar.
Stellt eine GUID dar (Globally Unique Identifier, globaler eindeutiger Bezeichner).
Stellt eine 16-Bit-Ganzzahl mit Vorzeichen dar.
Stellt eine 32-Bit-Ganzzahl mit Vorzeichen dar.
Stellt eine 64-Bit-Ganzzahl mit Vorzeichen dar.
Ein plattformabhängiger Typ zur Darstellung von Zeigern und Handles.
Stellt eine ganze 8-Bit-Zahl mit Vorzeichen dar.
Stellt eine Gleitkommazahl mit einfacher Genauigkeit dar.
Stellt ein Zeitintervall dar.
Stellt eine vorzeichenlose 16-Bit-Ganzzahl dar.
Stellt eine vorzeichenlose 32-Bit-Ganzzahl dar.
Stellt eine vorzeichenlose 64-Bit-Ganzzahl dar.
Ein plattformabhängiger Typ zur Darstellung von Zeigern und Handles.
Zeigt eine Methode an, die keinen Wert zurückgibt, d. h. eine Methode mit dem Rückgabetyp "void".