Vytváření 64-bitových aplikací ve Visual Studiu.NET 2003

Nedávno byla vydána 64-bitová verze Windows XP. Tento článek popisuje postup jak nakonfigurovat Visual Studio.NET 2003 pro sestavení 64-bitové aplikace. Pokud máte nainstalováno Visual Studio 2005, postup je trochu jednodušší a je popsán v revizi článku

1. 64bitový operační systém

Jako první krok by mělo být nainstalování operačního systému Windows XP 64-bit Edition. Tento krok sice není nezbytný k sestavení 64-bitových aplikací (kompiler a linker jsou 32-bitové) ale aplikace nepůjde spustit.

2. 64bitové Platform SDK

Kompiler a linker ve VS.NET 2003 neumí sestavit EXE soubory pro 64-bitovou platformu. Je proto třeba nainstalovat Platform SDK pro Windows Server 2003 SP1, který je k dispozici ke stažení na webu Microsoftu.

Platform SDK nainstalujte na pevný disk s výchozími volbami, jako setup použijte "SetupA64.exe". Tento článek předpokládá instalaci do adresáře D:\PSDK64, pokud si jej nainstalujete jinam, budete muset upravit cesty uváděné dále v tomto článku.

3. Konfigurace Visual Studia.NET 2003

Před spuštěním VS.NET 2003 je potřeba nastavit cesty ke kompileru, linkeru, hlavičkovým souborům a knihovnám z nainstalovaného Platform SDK. K tomu je nutné nastavení proměnných prostředí ve vlastnostech počítače (My Computer\Properties\Advanced\Environment variables). Proměnné nastavené instalátorem SDK nejsou nastaveny správně pro 64-bitovou platformu (aspoň podle mých zkušeností).

4. Konfigurace projektu

Jako výchozí projekt jsem vzal existující projekt pro Win API (32-bit), což bude zřejmě nejčastější případ.

5. Odstranění chyb

Jakýkoliv větší projekt bude nutně obsahovat chyby, které vzniknou typovými rozdíly na 64-bitových platformách. Množství chyb bude záviset na tom, jak precizně jste kód napsali. Velké množství chyb je možné opravit už při kompilaci pro 32-bitovou platformu, pokud překládáte na Warning Level 4 a se zapnutou volbou "Detect 64-bit portability issues". Tato dvě nastavení ale vyžadují značnou dávku masochismu, a programátoři často používají nižší úroveň warningů a detekci 64-bitové přenositelnosti nechávají vypnutou.

Při kompilaci 64-bitové verze vás bude kompilátor nemilosrdně trestat za chyby jako např.:

6. ... no a konečně to můžeme spustit

Pokud jste bez újmy na zdraví překonali celý uvedený postup, můžete zkusit zkompilovanou aplikaci spustit. Nezkoušejte to udělat v prostředí MSVC.NET 2003, 64-bitové aplikace nejsou podporovány. Možná se setkáte s problémem, že není nalezena knihovna MSVCRTD.dll. Tu musíte společně s PDB soubory nakopírovat do adresáře System32. Ačkoliv to vypadá jako vtip, ke kopírování do adresáře System32 musíte použít 64-bitovou aplikaci (Windows Explorer, ale ne např. Total Commander). Pokud neuposlechnete, soubory budou nakopírovány do adresáře Windows\SysWOW64, kam jsou 32-bitové aplikace automaticky přesměrovány pokud se pokusíte cokoliv provést v adresáři Windows\System32.

Pokud aplikaci spustíte, můžete se v Task Manageru přesvědčit, že opravdu jde o 64-bitovou aplikaci (viz. obr.)

Task Manager s naší běžící aplikací