How to build 64-bit apps for Windows on ARM

Updates to Visual Studio finally add native ARM64 support to Microsoft’s ARM-based always-connected PCs

Become An Insider

Sign up now and get FREE access to hundreds of Insider articles, guides, reviews, interviews, blogs, and other premium content. Learn more.

For much of its, life the Windows ecosystem has been associated with one processor family: Intel’s x86 and compatible devices such as AMD’s. Windows NT’s brief flirtation with other processor families didn’t last long, with MIPs and DEC’s Alpha cast aside after a few releases. Even Intel’s Itanium didn’t last long, with Windows Server 2008 R2 the last release to support it.

But the Intel domination of the Windows platform began to change in earnest with the release of Windows 8. A new edition, Windows RT, brought it to a new processor architecture, with support for ARM’s growing family of hardware. The functionally limited Windows RT was short-lived, and so it got very little hardware support beyond Microsoft’s original Surface RT. But Windows’s ARM support lived on, in the IoT Core release of Windows 10 and in the NT kernel-based Windows 10 Mobile.

Introducing Windows on ARM

In late 2017, Microsoft announced Windows on ARM, a full version of Windows 10 that would run on the latest generation of ARM processors. Developed with Qualcomm, it included an emulation layer that would run 32-bit x86 code alongside UWP apps compiled for ARM32. The emulator worked well, and where code failed to run Microsoft quickly shipped modified configurations that let those apps run.

Always-on, always-connected hardware using Qualcomm’s LTE Snapdragonsystem-on-a-chip (SoC) hardware is attractive. It can support mobile business scenarios more effectively than a smartphone, and with 18 hours or more of battery life, it ensures that mobile PCs will still be online even at the end of a 12-hour shift. Like all PCs, these machines need software, software that performs to the best possible extent.

Unfortunately, Windows on ARM’s reliance on 32-bit code was a limitation, because modern code tends to be compiled for 64-bit systems, supporting the default installation of Windows on Intel systems. So, while you might have an app you want to install on an ARM-based Windows PC, without a 32-bit version it might not be supported.

To continue reading this article register now