Senin, 15 Mei 2017

Compile Aplikasi Desktop ARM/ARM64 di Visual Studio 2017

Banyak yang kira Microsoft sudah meninggalkan Windows on ARM/ARM64, tapi ternyata masih memungkinkan bikin aplikasi desktop native untuk platform ini. Hanya saja, ada beberapa hal yang perlu diperhatikan sebelum Visual Studio 2017 mau “ngomong sama ARM/ARM64”.

Caveat #1 – Install Compiler & Library ARM/ARM64

Di setup Visual Studio 2017, compiler ARM tidak ditampilkan di Workloads. Kamu harus buka Individual Components dan pilih sendiri. Jangan lupa, untuk ARM64 harus pakai VS 2017 Update 4 (v15.4) atau lebih baru.

Caveat #2 – Error MSB8022

Setelah pilih target ARM/ARM64 dan klik Build Solution, mungkin muncul:

Toolset.targets(53,5): error MSB8022: Compiling Desktop applications for the ARM platform is not supported.

Ini karena Microsoft sebenarnya nggak mau kita bikin aplikasi Win32 native ARM/ARM64, lebih fokus ke UWP. Tapi ada trik supaya bisa:

  1. Buka semua file .vcxproj di project kamu.
  2. Temukan <PropertyGroup> untuk Release|ARM[64] dan Debug|ARM[64].
  3. Tambahkan properti berikut (contoh untuk ARM64):
    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
      <ConfigurationType>Application</ConfigurationType>
      <CharacterSet>Unicode</CharacterSet>
      <WholeProgramOptimization>true</WholeProgramOptimization>
      <PlatformToolset>v141</PlatformToolset>
      <WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
    </PropertyGroup>

Caveat #3 – Pastikan SDK & Library Lengkap

Linker mungkin ngeluh soal library yang hilang, terutama kalau pakai default SDK 8.1. Beberapa library penting untuk ARM, seperti setupapi.lib, baru tersedia di Windows SDK terbaru (contoh: 10.0.15063.0). Pastikan pilih SDK lengkap di Individual Components supaya semua library terinstall.

Setelah langkah-langkah di atas, Visual Studio 2017 akan bisa compile aplikasi desktop native ARM/ARM64. Bagi yang penasaran contoh nyata, bisa lihat bagaimana Rufus melakukannya.

<< Beranda