Поделиться через


Преобразование проектов из смешанного режима в чистый промежуточный язык

Все проекты среды CLR Visual C++ по умолчанию ссылаются на библиотеки времени выполнения C.Следовательно, эти проекты классифицируются как приложения смешанного режима, поскольку в них объединяется машинный код и код, предназначенный для среды CLR (т.е. управляемый код).Они компилируются в промежуточный язык (IL), также называемый языком MSIL.

Преобразование проектов из смешанного режима в чистый промежуточный язык

  1. Удалите ссылки на библиотеки времени выполнения C (CRT):

    1. В CPP-файле, определяющем точку входа приложения, измените точку входа на Main().Значение Main() указывает, что данный проект не ссылается на CRT.

    2. В обозревателе решений щелкните правой кнопкой мыши проект и выберите в контекстном меню пункт Свойства, чтобы открыть страницы свойств приложения.

    3. На странице свойств Дополнительно узла Компоновщика проекта введите для параметра точка входа значение Main.

    4. Для консольных приложений на странице свойств Система узла Компоновщика проекта выберите поле Подсистема и измените его значение на Console (/SUBSYSTEM:CONSOLE).

      ПримечаниеПримечание

      Для приложений Windows Forms это свойство устанавливать не нужно, поскольку поле Подсистема по умолчанию имеет значение Windows (/SUBSYSTEM:WINDOWS).

    5. В файле stdafx.h закомментируйте все операторы #include.Например, в консольных приложениях:

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

      -или-

      В приложениях Windows Forms:

      // #include <stdlib.h>
      // #include <malloc.h>
      // #include <memory.h>
      // #include <tchar.h>
      
    6. Для приложений Windows Forms в файле Form1.cpp закомментируйте оператор #include, который ссылается на файл windows.h.Например:

      // #include <windows.h>
      
  2. Добавьте в файл stdafx.h следующий код:

    #ifndef __FLTUSED__
    #define __FLTUSED__
       extern "C" __declspec(selectany) int _fltused=1;
    #endif
    
  3. Удалите все неуправляемые типы:

    1. Везде, где это возможно, замените неуправляемые типы ссылками на структуры из пространства имен System.Основные управляемые типы перечислены в следующей таблице.

      Структура

      Описание

      Boolean

      Представляет логическое значение.

      Byte

      Представляет 8-битовое целое число без знака.

      Char

      Представляет символ Юникода.

      DateTime

      Представляет текущее время, обычно выраженное как дата и время суток.

      Decimal

      Представляет десятичное число.

      Double

      Представляет число двойной точности с плавающей запятой.

      Guid

      Представляет глобальный уникальный идентификатор (GUID).

      Int16

      Представляет 16-разрядное целое число со знаком.

      Int32

      Представляет 32-разрядное целое число со знаком.

      Int64

      Представляет 64-разрядное целое число со знаком.

      IntPtr

      Определяемый платформой тип, который используется для представления указателя или дескриптора.

      SByte

      Представляет 8-разрядное целое число со знаком.

      Single

      Представляет число одиночной точности с плавающей запятой.

      TimeSpan

      Представляет интервал времени.

      UInt16

      Представляет беззнаковое 16-разрядное целое число.

      UInt32

      Представляет беззнаковое 32-разрядное целое число.

      UInt64

      Представляет беззнаковое 64-битовое целое число.

      UIntPtr

      Определяемый платформой тип, который используется для представления указателя или дескриптора.

      Void

      Указывает метод, который не возвращает значение, т.е. метод, который имеет тип возвращаемого значения "Void".