Sdílet prostřednictvím


64bitové aplikace

Při kompilaci aplikace můžete určit, že by měla běžet v 64bitovém operačním systému Windows, a to buď jako nativní aplikace, nebo pod WOW64 (Windows 32bitová verze ve Windows 64bitová verze). WOW64 je prostředí kompatibility, které umožňuje 32bitové aplikaci spustit v 64bitovém systému. WOW64 je součástí všech 64bitových verzí operačního systému Windows.

Spouštění 32bitových a 64bitových aplikací ve Windows

32bitové aplikace založené na rozhraní .NET Framework 4 nebo novějších verzích běží pod WOW64 v 64bitových systémech.

Visual Studio nainstaluje 32bitovou verzi modulu CLR na počítač s platformou x86 a 32bitovou i odpovídající 64bitovou verzi modulu CLR na 64bitový počítač s Windows. (Vzhledem k tomu, že visual Studio je 32bitová aplikace, když je nainstalovaná v 64bitovém systému, běží pod WOW64.)

Poznámka:

Vzhledem k návrhu emulace x86 a subsystému WOW64 pro řadu procesorů Itanium jsou aplikace omezeny na provádění na jednom procesoru. Tyto faktory snižují výkon a škálovatelnost 32bitových aplikací rozhraní .NET Framework, které běží v systémech s procesorem Itanium. Doporučujeme použít rozhraní .NET Framework 4, které zahrnuje nativní 64bitovou podporu pro systémy s procesorem Itanium, pro zvýšení výkonu a škálovatelnosti.

Když ve výchozím nastavení spustíte 64bitovou spravovanou aplikaci v 64bitovém operačním systému Windows, můžete vytvořit objekt o velikosti maximálně 2 gigabajty (GB). V rozhraní .NET Framework 4.5 však můžete tento limit zvýšit. Další informace naleznete v <gcAllowVeryLargeObjects> element.

Mnoho sestavení běží identicky na 32bitovém modulu CLR i v 64bitovém modulu CLR. Některé programy se ale můžou chovat jinak v závislosti na CLR, pokud obsahují jednu nebo více z následujících možností:

  • Struktury obsahující členy, které mění velikost v závislosti na platformě (například jakýkoli typ ukazatele).
  • Aritmetika ukazatele, která zahrnuje konstantní velikosti.
  • Nesprávná platforma vyvolá nebo deklarace modelu COM, které se používají Int32 pro popisovače místo IntPtr.
  • Kód, který přetypuje IntPtr na Int32.

Další informace o tom, jak přenést 32bitovou aplikaci, která se má spustit v 64bitovém modulu CLR, najdete v tématu Migrace 32bitového spravovaného kódu na 64bitovou verzi.

Obecné informace o 64bitovém programování

Obecné informace o 64bitovém programování najdete v následujících dokumentech:

Podpora kompilátoru pro vytváření 64bitových aplikací

Když ve výchozím nastavení použijete rozhraní .NET Framework k sestavení aplikace na 32bitovém nebo 64bitovém počítači, aplikace se spustí na 64bitovém počítači jako nativní aplikace (to znamená, že není pod WOW64). Následující tabulka uvádí dokumenty, které vysvětlují, jak pomocí kompilátorů sady Visual Studio vytvářet 64bitové aplikace, které se budou spouštět jako nativní, pod WOW64 nebo obojí.

Compiler Možnost kompilátoru
Visual Basic -platform (Visual Basic)
Visual C# -platform (možnosti kompilátoru C#)
Visual C++ Pomocí příkazu /clr:safe můžete vytvářet aplikace nezávislé na platformě(CIL) společného zprostředkujícího jazyka ( CIL). Další informace naleznete v tématu -clr (Common Language Runtime Compilation).

Visual C++ obsahuje samostatný kompilátor pro každý 64bitový operační systém. Další informace o tom, jak používat Visual C++ k vytváření nativních aplikací, které běží v 64bitovém operačním systému Windows, naleznete v 64bitovém programování.

Určení stavu souboru EXE nebo DLL

Chcete-li zjistit, zda má být soubor .exe nebo .dll soubor spuštěn pouze na konkrétní platformě nebo pod WOW64, použijte CorFlags.exe (CorFlags Conversion Tool) bez možností. Pomocí CorFlags.exe můžete také změnit stav platformy souboru .exe nebo .dll souboru. Hlavička CLR sestavení sady Visual Studio má hlavní číslo verze modulu runtime nastavené na 2 a číslo podverze modulu runtime nastavené na 5. Aplikace, které mají podverzi modulu runtime nastavenou na 0, se považují za starší aplikace a vždy se spouštějí v rámci WOW64.

Pokud chcete programově dotazovat .exe nebo .dll, abyste zjistili, jestli se má spouštět pouze na konkrétní platformě nebo v rámci WOW64, použijte metodu Module.GetPEKind .