Share via


64 位元應用程式

更新:2007 年 11 月

您可以編譯自己的應用程式,並指定該應用程式必須在 64 位元作業系統中當做原生應用程式執行,或是在 WOW64 下執行。WOW64 是作業系統所提供的相容性環境,可以讓 32 位元應用程式在 Windows 64 位元作業系統上執行。

備註

以 .NET Framework 1.0 和 1.1 版建置的所有應用程式都被視為是 32 位元應用程式,並且一律要在 64 位元作業系統上之 WOW64 下的 32 位元 Common Language Runtime (CLR) 執行。此外,以 .NET Framework 2.0 版所建置的特定 32 位元應用程式也要在 64 位元平台的 WOW64 之下執行。

Visual Studio 會在 x86 電腦上安裝 32 位元版本的 2.0 CLR,以及在 64 位元 Windows 電腦上安裝 32 位元與適當之 64 位元版本的 2.0 CLR(Visual Studio 2008 是 32 位元應用程式,將它安裝在 64 位元 Windows 作業系統中時,會在 WOW64. 下執行)。

注意事項:

因為 Itanium 處理器系列的 x86 模擬和 WOW64 子系統的設計,應用程式會被限制只能在一個處理器上執行。單一處理器的執行方式以及 x86 模擬都會降低 32 位元 .NET Framework 應用程式在 Itanium 架構的系統上執行時的效能與延展性。建議您將使用 .NET Framework 1.1 版的應用程式用來做為互動式用戶端應用程式,而不要用來做為需要高效能或高延展性的應用程式,例如高負載的 ASP.NET 應用程式。如果需要較高的效能與延展性,請考慮使用 .NET Framework 2.0 版,因為它針對 Itanium 架構的系統納入了原生 64 位元支援。

如同使用 32 位元 Windows 作業系統一樣,在 64 位元 Windows 作業系統上執行 64 位元 Managed 應用程式時,可以建立的物件大小具有 2GB 的限制。

在許多情況下,組件在 32 位元或 64 位元 CLR 上執行時並沒有差異,有一些原因會造成程式在 64 位元 CLR 上執行時產生不同的行為,這些原因包括:

  • 包含成員的結構在不同平台上會改變大小,如指標型別

  • 包含常數大小的指標算術

  • 不正確的平台叫用或使用 Int32 而非使用 IntPtr 控制代碼的 COM 宣告

  • 將 IntPtr 轉換為 Int32

如需移植 32 位元應用程式以便在 64 位元 CLR 上執行的詳細資訊,請參閱 https://msdn2.microsoft.com/zh-tw/library/ms973190.aspx

一般 64 位元程式設計資訊

如需 64 位元程式設計問題的一般資訊,請參閱:

如需 Visual Studio 開發環境中對於建立 64 位元應用程式的支援的詳細資訊,請參閱 Visual Studio 開發環境 64 位元支援

建立 64 位元應用程式的編譯器支援

根據預設,使用 .NET Framework 2.0 (在 32 位元或 64 位元電腦上) 建置的應用程式會以原生應用程式的形式 (而不是在 WOW64 下) 在 64 位元電腦上執行。下表列出一些說明主題,這些主題會討論如何使用 Visual Studio 編譯器建立能夠以原生方式執行、在 WOW64 之下執行,或者以這兩種方式執行的 64 位元應用程式。

編譯器

編譯器選項

Visual Basic

/platform (Visual Basic)

Visual C#

/platform (指定輸出平台) (C# 編譯器選項)

Visual C++

您可以使用 /clr:safe 建立與平台無關的 MSIL 應用程式;如需詳細資訊,請參閱 /clr (Common Language Runtime 編譯)

Visual C++ 會隨附以每一種 64 位元作業系統為目標的個別編譯器。如需使用 Visual C++ 建立可在 64 位元 Windows 作業系統上執行之原生應用程式的詳細資訊,請參閱 使用 Visual C++ 進行 64 位元程式設計

JScript

/platform (JScript)

判斷 .exe 或 .dll 的狀態

請在命令列使用 corflags.exe,以查看某個 .exe 或 .dll 是否只能在特定平台上執行,或可以在 WOW64 下執行,您也可以使用 corflags.exe 變更 .exe 或 .dll 的平台狀態。如需詳細資訊,請參閱 CorFlags 轉換工具 (CorFlags.exe)。Visual Studio 組件的 CLR 標頭 (或 COM+ 執行階段標頭) 的 [執行階段主要版本號碼] 是設為 2,而 [執行階段次要版本號碼] 則是設為 5。在 Visual Studio 2003 組件中,它們分別是設為 2 和 0。執行階段次要版本號碼設為 0 的所有應用程式都被視為是舊版應用程式,一定會在 64 位元電腦上的 WOW64 下執行。

請使用 GetPEKind 以程式設計方式查詢 .exe 或 .dll,以查看它是否只能在特定平台上執行,或可以在 WOW64 下執行。

請參閱

其他資源

Windows 架構的應用程式、元件和服務