# [Port applications to Arm64 using Arm64EC](https://learn.arm.com/learning-paths/laptops-and-desktops/win_arm64ec_porting/)

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/laptops-and-desktops/win_arm64ec_porting/)
- [Application](https://learn.arm.com/learning-paths/laptops-and-desktops/win_arm64ec_porting/how-to-1/)
- [Porting using CMake](https://learn.arm.com/learning-paths/laptops-and-desktops/win_arm64ec_porting/how-to-2/)
- [Porting using MSBuild](https://learn.arm.com/learning-paths/laptops-and-desktops/win_arm64ec_porting/how-to-3/)
- [Next Steps](https://learn.arm.com/learning-paths/laptops-and-desktops/win_arm64ec_porting/_next-steps/)

## About this Learning Path

| Skill level:    | Introductory        |
|------------------|---------------------|
| Reading time:    | 1 hr 30 min         |
| Last updated:    | 28 Jul 2026         |

| Author:          | Dawid Borycki [GitHub](https://github.com/dawidborycki)               |
|------------------|------------------------------------------------------------------|
| Arm IP:          | [Cortex-A](https://support.arm.com/?tab=compute-ip&Product%20Type=Application%20Processors) |
| Tags:            | [Migration to Arm](https://learn.arm.com/tag/migration-to-arm), [Windows](https://learn.arm.com/tag/windows), [C](https://learn.arm.com/tag/c), [CPP](https://learn.arm.com/tag/cpp), [Qt](https://learn.arm.com/tag/qt) |

### Who is this for?
This is an introductory topic for developers who want to learn how to port their applications to Arm64 using Arm64EC.

### What will you learn?
Upon completion of this Learning Path, you will be able to:
- Build a Qt-based Python desktop application.
- Create dependencies for C++ and use them in the Qt-based Python app.
- Learn how to port dependencies for C++ to Arm64 using Arm64EC.

### Prerequisites
Before starting, you will need the following:
- A Windows on Arm computer such as the Lenovo Thinkpad X13s running Windows 11 or a Windows on Arm [virtual machine](https://learn.arm.com/learning-paths/cross-platform/woa_azure/).
- Any code editor. [Visual Studio Code for Arm64](https://code.visualstudio.com/docs/?dv=win32arm64user) is suitable.
- Visual Studio 2022 with Arm build tools. For installation steps, see [Install Visual Studio](https://developer.arm.com/documentation/102528/0100/Install-Visual-Studio).

### Summary
You’ll port a Qt-based Python desktop app with C++ DLL dependencies to Arm64 on Windows using Arm64EC. You’ll build the app, choose a CMake or MSBuild workflow, configure `CMakePresets.json` or a Visual Studio project, and port DLLs incrementally while keeping compatible x64 dependencies in the same process.

### Frequently asked questions
<details>
<summary>Should I use CMake or MSBuild to port my DLLs?</summary>
Use the build system your project already uses. You’ll learn about both approaches in the Learning Path. If you followed earlier steps with CMake, continue with the CMake method.
</details>

<details>
<summary>How do I know I'm targeting Arm64EC?</summary>
Verify that your preset or project configuration sets the build target to Arm64EC and matches the example shown in the step. A successful build with that target confirms the configuration.
</details>

<details>
<summary>What do I change in CMake to port a DLL?</summary>
Edit `CMakePresets.json` and add the final statement block so the file matches the provided example. Rebuild to produce the Arm64EC build of the DLL.
</details>

<details>
<summary>In Visual Studio, which setting do I use to build for Arm64EC?</summary>
Create the Console Application project and set the build target to Arm64EC. Use the specified project names and confirm the platform configuration before building.
</details>

<details>
<summary>Can I keep some dependencies as x64 while I port others?</summary>
Yes. Arm64EC allows x64 dependencies to load in the same process as Arm64 binaries, enabling incremental migration of components.
</details>
