將專案從混合模式轉換為純中繼語言
依照預設,所有 Visual C++ CLR 專案都會連結至 C 執行階段程式庫。 因此,這些專案將歸類為混合模式的應用程式,因為其將機器碼,與以 Common Language Runtime (Managed 程式碼) 為目標的程式碼相結合。 當編譯這些專案時,會將它們編譯成中繼語言 (Intermediate Language,IL),又稱為 Microsoft Intermediate Language (MSIL)。
若要將混合模式的應用程式轉換成純中繼語言
移除連至 C 執行階段程式庫 (CRT) 的連結:
在 .cpp 檔中定義應用程式的進入點,將進入點變更為 Main()。 使用 Main() 表示專案沒有連結至 CRT。
在 [方案總管] 中,在專案上按一下滑鼠右鍵,然後在捷徑功能表上選取 [屬性],以開啟應用程式的屬性頁。
在 [連結器] 的 [進階] 專案屬性頁中,選取 [進入點] 欄位,然後在此欄位中輸入 Main。
若是主控台應用程式,請在 [連結器] 的 [系統] 專案屬性頁中,選取 [子系統] 欄位,然後將該欄位變更為 [主控台 (/SUBSYSTEM:CONSOLE)]。
注意事項 您不需要為 Windows Form 應用程式設定此屬性,因為 [子系統] 欄位已預設值為 Windows (/SUBSYSTEM:WINDOWS)。
在 stdafx.h 中會將所有 #include 陳述式都變成註解。 例如,在主控台應用程式中:
// #include <iostream> // #include <tchar.h>
-或-
例如,在 Windows Forms 應用程式:
// #include <stdlib.h> // #include <malloc.h> // #include <memory.h> // #include <tchar.h>
若是 Windows Form 應用程式 (在 Form1.cpp 中),請將參考 windows.h 的 #include 陳述式標記為註解。 例如:
// #include <windows.h>
將下列程式碼加入至 stdafx.h:
#ifndef __FLTUSED__ #define __FLTUSED__ extern "C" __declspec(selectany) int _fltused=1; #endif
移除所有 Unmanaged 型別:
如有需要,請將 Unmanaged 型別取代成 System 命名空間中之結構的參考。 下表列出幾個常見的 Managed 型別:
結構
說明
表示布林值。
表示 8 位元不帶正負號的整數 (Unsigned Integer)。
表示 Unicode 字元。
表示時間的瞬間,通常以一天的日期和時間表示。
代表十進位數值。
表示雙精度浮點數。
表示全域唯一識別項 (GUID)。
表示 16 位元帶正負號的整數 (Signed Integer)。
表示 32 位元帶正負號的整數 (Signed Integer)。
表示 64 位元帶正負號的整數 (Signed Integer)。
特定平台專用的型別,用來代表指標或控制代碼。
代表 8 位元帶正負號的整數。
表示單精確度浮點數。
表示時間間隔。
表示 16 位元不帶正負號的整數 (Unsigned Integer)。
表示 32 位元不帶正負號的整數 (Unsigned Integer)。
表示 64 位元不帶正負號的整數 (Unsigned Integer)。
特定平台專用的型別,用來代表指標或控制代碼。
表示不會傳回數值的方法,也就是該方法有 void 傳回型別。