Udostępnij za pośrednictwem


Konwertowanie projektów z trybu mieszanego na czysty język pośredni

Wszystkie projekty języka Visual C++ CLR domyślnie łączą się z bibliotekami czasu wykonywania języka C. W związku z tym te projekty są klasyfikowane jako aplikacje w trybie mieszanym, ponieważ łączą kod natywny z kodem przeznaczonym dla środowiska uruchomieniowego języka wspólnego (kod zarządzany). Po skompilowaniu są one kompilowane w języku pośrednim (IL), nazywanym również językiem pośrednim firmy Microsoft (MSIL).

Ważne

Przestarzałe programy Visual Studio 2015 i Visual Studio 2017 nie obsługują już tworzenia /clr:pure ani /clr:safe kodu dla aplikacji CLR. Jeśli potrzebujesz czystych lub bezpiecznych zestawów, zalecamy tłumaczenie aplikacji na język C#.

Jeśli używasz starszej wersji zestawu narzędzi kompilatora języka Microsoft C++, który obsługuje /clr:pure program lub /clr:safe, możesz użyć tej procedury, aby przekonwertować kod na czysty MSIL:

Aby przekonwertować aplikację w trybie mieszanym na czysty język pośredni

  1. Usuń łącza do bibliotek środowiska uruchomieniowego języka C (CRT):

    1. W pliku .cpp definiującym punkt wejścia aplikacji zmień punkt wejścia na Main(). Użycie Main() wskazuje, że projekt nie łączy się z CRT.

    2. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz polecenie Właściwości w menu skrótów, aby otworzyć strony właściwości aplikacji.

    3. Na stronie Właściwości projektu zaawansowanegokonsolidatora wybierz punkt wejścia, a następnie wprowadź ciąg Main w tym polu.

    4. W przypadku aplikacji konsolowych na stronie właściwości projektu System konsolidatora wybierz pole SubSystem i zmień je na Console (/SUBSYSTEM:CONSOLE).

      Uwaga

      Nie musisz ustawiać tej właściwości dla aplikacji Windows Forms, ponieważ pole SubSystem jest domyślnie Windows (/SUBSYSTEM:WINDOWS) ustawione.

    5. W stdafx.hpliku oznacz jako komentarz wszystkie instrukcje #include . Na przykład w aplikacjach konsoli:

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

      — lub —

      Na przykład w aplikacjach Windows Forms:

      // #include <stdlib.h>
      // #include <malloc.h>
      // #include <memory.h>
      // #include <tchar.h>
      
    6. W przypadku aplikacji Windows Forms w pliku Form1.cppdodaj komentarz do instrukcji #include , która odwołuje się do windows.h. Na przykład:

      // #include <windows.h>
      
  2. Dodaj następujący kod do pliku stdafx.h:

    #ifndef __FLTUSED__
    #define __FLTUSED__
       extern "C" __declspec(selectany) int _fltused=1;
    #endif
    
  3. Usuń wszystkie typy niezarządzane:

    W razie potrzeby zastąp niezarządzane typy odwołaniami do struktur z System przestrzeni nazw. Typowe typy zarządzane są wymienione w poniższej tabeli:

    Struktura opis
    Boolean Reprezentuje wartość logiczną.
    Byte Reprezentuje 8-bitową liczbę całkowitą bez znaku.
    Char Reprezentuje znak Unicode.
    DateTime Reprezentuje moment w czasie, zwykle wyrażony jako data i godzina dnia.
    Decimal Reprezentuje liczbę dziesiętną.
    Double Reprezentuje liczbę zmiennoprzecinkową o podwójnej precyzji.
    Guid Reprezentuje unikatowy identyfikator globalny (GUID).
    Int16 Reprezentuje 16-bitową liczbę całkowitą ze znakiem.
    Int32 Reprezentuje 32-bitową liczbę całkowitą ze znakiem.
    Int64 Reprezentuje 64-bitową liczbę całkowitą ze znakiem.
    IntPtr Typ specyficzny dla platformy, który jest używany do reprezentowania wskaźnika lub uchwytu.
    SByte Reprezentuje 8-bitową liczbę całkowitą ze znakiem.
    Single Reprezentuje liczbę zmiennoprzecinkową o pojedynczej precyzji.
    TimeSpan Reprezentuje przedział czasu.
    UInt16 Reprezentuje 16-bitową liczbę całkowitą bez znaku.
    UInt32 Reprezentuje 32-bitową liczbę całkowitą bez znaku.
    UInt64 Reprezentuje 64-bitową liczbę całkowitą bez znaku.
    UIntPtr Typ specyficzny dla platformy, który jest używany do reprezentowania wskaźnika lub uchwytu.
    Void Wskazuje metodę, która nie zwraca wartości; oznacza to, że metoda ma typ zwracany void .