Dela via


64-bit applikationer

När du kompilerar ett program kan du ange att det ska köras på ett Windows 64-bitars operativsystem antingen som ett internt program eller under WOW64 (Windows 32-bitars på Windows 64-bitars). WOW64 är en kompatibilitetsmiljö som gör att ett 32-bitarsprogram kan köras på ett 64-bitarssystem. WOW64 ingår i alla 64-bitarsversioner av Windows-operativsystemet.

Köra 32-bitars jämfört med 64-bitarsprogram i Windows

32-bitarsprogram som bygger på .NET Framework 4- eller senare versioner körs under WOW64 på 64-bitarssystem.

Anmärkning

På grund av utformningen av x86-emulering och undersystemet WOW64 för Itanium-processorfamiljen är programmen begränsade till körning på en processor. Dessa faktorer minskar prestanda och skalbarhet för 32-bitars .NET-program som körs på Itanium-baserade system. Vi rekommenderar att du använder .NET Framework 4 eller senare, som innehåller inbyggt 64-bitars stöd för Itanium-baserade system, för ökad prestanda och skalbarhet.

När du kör ett 64-bitars hanterat program på ett 64-bitars Windows-operativsystem kan du som standard skapa ett objekt på högst 2 GIGABYTE (GB). I .NET Framework 4.5 och senare kan du dock öka den här gränsen. Mer information finns i elementet< gcAllowVeryLargeObjects>.

Många sammansättningar körs identiskt på både 32-bitars CLR och 64-bitars CLR. Vissa program kan dock bete sig annorlunda, beroende på CLR, om de innehåller ett eller flera av följande:

  • Strukturer som innehåller medlemmar som ändrar storlek beroende på plattform (till exempel valfri pekartyp).
  • Pekarearitmetik som innehåller konstanta storlekar.
  • Felaktiga plattformsanrop eller COM-deklarationer som använder Int32 för handtag i stället för IntPtr.
  • Kod som omvandlas IntPtr till Int32.

Mer information om hur du porterar ett 32-bitarsprogram som ska köras på 64-bitars CLR finns i Migrera 32-bitars hanterad kod till 64-bitars.

Allmän 64-bitars programmeringsinformation

Allmän information om 64-bitars programmering finns i följande dokument:

Kompilatorstöd för att skapa 64-bitarsprogram

När du använder .NET för att skapa ett program på en 32-bitars eller en 64-bitars dator körs programmet som standard på en 64-bitars dator som ett internt program (dvs. inte under WOW64). I följande tabell visas dokument som förklarar hur du använder Visual Studio-kompilatorer för att skapa 64-bitarsprogram som ska köras som inbyggda, under WOW64 eller båda.

Kompilator Kompilatoralternativ
Visual Basic -platform (Visual Basic)
Visual C# -platform (C#-kompilatoralternativ)
Visual C++ Du kan skapa CIL-program (platform-agnostic, common intermediate language) med hjälp av /clr:safe. Mer information finns i -clr (Common Language Runtime Compilation).

Visual C++ innehåller en separat kompilator för varje 64-bitars operativsystem. Mer information om hur du använder Visual C++ för att skapa inbyggda program som körs på ett 64-bitars Windows-operativsystem finns i 64-bitars programmering.

Fastställa status för en .exe-fil eller .dll fil

Om du vill avgöra om en .exe fil eller .dll fil endast ska köras på en specifik plattform eller under WOW64 använder duCorFlags.exe (CorFlags Conversion Tool) utan alternativ. Du kan också använda CorFlags.exe för att ändra plattformsstatusen för en .exe fil eller .dll fil. CLR-huvudet för en Visual Studio-sammansättning har det större körningsversionsnumret inställt på 2 och det lägre körningsversionsnumret är inställt på 5. Program som har den lägre körningsversionen inställd på 0 behandlas som äldre program och körs alltid under WOW64.

För att programmatiskt fråga en .exe eller .dll och se om den endast är avsedd att köras på en specifik plattform eller under WOW64, använd Module.GetPEKind-metoden.