ARM64 Support

Introduction

/n software components offer support for ARM64 machines in both the .NET and C++ editions. This article describes how to build for ARM64 on both Windows and Linux operating systems. This article covers the following common operations:

  1. Deploying a .NET project to an ARM64 system
  2. Building with C++ for an ARM64 Windows system
  3. Building from source for an ARM64 Linux system

For information on using our components on macOS, see the Using the Components in macOS and iOS article.

Deploying a .NET project to an ARM64 system

Deploying a .NET project to an ARM64 system requires .NET 5 or higher, but the process is the same for both Windows and Linux. To target ARM64 in a Visual Studio .NET project, go to Project -> Properties -> General and set the Platform Target to "ARM64".

Add Items

When you build the project it will create a DLL file in the output directory. To use it on an ARM64 system, copy the DLL file to the system and run it with "dotnet <projectname>.dll".

Linux Note: The "dotnet" command cannot be installed through a package manager on an ARM64 system, so you will need to use Snap or a scripted or manual installation.

Building with C++ for an ARM64 Windows system

Visual Studio allows you to target ARM64 while building a project for a Windows system in C++. To target ARM64 in a Visual Studio C++ project, set the Platform in the configuration manager to ARM64 and reference the library files in the "libarm64" folder of the installation directory.

You can debug the project on the ARM64 system by setting up remote debugging. You'll need to configure the debugger to deploy the DLL file from the "libarm64" folder, which you can do from Project -> Properties -> Debugging -> Additional Files to Deploy.

Add Items

When you deploy the final .exe file, you'll need to copy the DLL from the "libarm64" folder along with it.

Building from source for an ARM64 Linux system

The setup ZIP for Linux systems includes obfuscated source code in the "src" folder of the installation directory to build on an ARM64 system. You can use that to compile your application on the ARM64 system itself. The following command can be used to build IPWorks itself in the src folder:

g++ -c -fno-exceptions -fno-rtti -fPIC -o ipworks.o ipworks.cpp

Then you can build one of the demos (or your own project) with the resulting .o file:

g++ -D UNIX -o httpurl ../../src/ipworks.o httpurl.cpp -I../../include/ -lz -ldl

We appreciate your feedback.  If you have any questions, comments, or suggestions about this article please contact our support team at kb@nsoftware.com.