Port the Win32 library to Arm64
Who is this for?
This is an introductory topic for developers who want to learn how to port their Win32 applications to Arm64
What will you learn?
Upon completion of this Learning Path, you will be able to:
- Create C/C++ Win32 DLL
- Use Win32 DLL in the Console App
- Learn how to port the C/C++ Win32 DLL to Arm64
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 .
- Refer to Visual Studio 2022 with Arm build tools .
Summary
This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.
You’ll create a C++ Win32 dynamic-link library (DLL) and use it from a Windows console application. First, you’ll configure both projects for Arm64, rebuild them, and verify that the console app loads and calls the DLL successfully. Then, you’ll switch between x64 and Arm64 builds to compare execution time on Windows on Arm.
Frequently asked questions
These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.
Create a C++ Win32 DLL and a Windows console application that uses the DLL. The console app should call at least one exported function from the DLL.
Build the projects with an Arm64 target and run the resulting console app on Windows on Arm. If the app starts and calls into the DLL without loader errors, the artifacts match the expected architecture.
Verify that both the DLL and console app are built for the same architecture (Arm64). Also confirm the DLL is in the app’s runtime search path when you launch the executable.
Select x64 or ARM64 from the platform dropdown, then select Local Windows Debugger. Run both configurations and compare the execution times reported by the application.
Yes. You can use a Windows on Arm computer or a Windows on Arm virtual machine.