to 64bit or not to 64bit

64 bitový windows tu máme už nejaký ten piatok, ale stále ma dokáže udiviť niektorými vlastnosťami. Písať o tom, aké sú rozdielne klasické Win32 DLL a to aj systémové asi nemá ani zmysel. Pod 64 bitovými windowsmi (tým viac server edition) len ťažko rozbeháte napríklad náhľady videa v exploreri. Našťastie C# je na tom o niečo lepšie.

64 bit + C#

Aplikácia pod .NET sa snaží vždy bežať „čo najlepšie“ (čo je chválitebné), preto sa pri prvom spustení sama prekompiluje podľa dostupného prostredia (verzie OS, procesora, nainštalovaných frameworkov atď.). Zožere nám to nejaké to miesto na systémovom disku a trochu času, ale druhý krát sa už spúšťa v skutočnosti kópia z cache. Ak teda spustíme “hello world” pod 64 bit OS, bude sa spúšťať ako 64 bitový proces. Čo ak ale využívame 32 bitové DLL knižnice? Tie musia bežať pod 32 bitovým procesom (nemôžeme mat časť procesu 32 bitovú a časť 64). Našťastie môžeme povedať celému .NET procesu, aby bol 32 bitový a takto zachrániť aj tieto postaršie knižnice.
Nastavíme to v Properties aplikácie (môžeme aj assembly, ale dôležité je to hlavne v aplikácii, inde necháme Auto).

Aké jednoduché… by to mohlo byť

Väčšinou je to naozaj až také jednoduché. Stále ale niečo môže vyskočiť. Napríklad si treba dať pozor, že adresár C:\Windows\System32 smeruje do iného adresára pod 32 bitovým a 64 bitovým procesom (v tom istom case pod tym istym OS).
Ďalším problémom je IIS, ktorý sa nedá úplne jednoducho prepnúť do 32 bitov, ale je to možné.

This entry was posted in Nezaradené, Programovanie and tagged . Bookmark the permalink.

One Response to to 64bit or not to 64bit

  1. kasperko says:

    32/64bit problemy som tiez musel riesit nedavno s Javaou, vo vysledku mam dve Javy na kompe :(

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">