Building an AnyConnect client

The API bundle contains the libraries, project files, and build scripts required to build the included examples.

At this time, the supported platforms include those supported in the current release of AnyConnect. These include Windows, macOS and Linux. Look in the example directory for test programs. Also, see the Examples section on the "Advanced Topics" page with this documentation.

# Windows

There are several issues with the API and integrating it into your client application on a Windows platform when using the static libraries. One issue to be aware of is the version of Visual Studio currently supported. To interact with the installed VpnApi.dll directly, please see the COM API documentation.

## Visual Studio

On Windows, the static libs provided require the client implementor to build using Visual Studio 2019 (MSVC v142) with Windows SDK 10.0.19041.

## AnyConnect VpnApi dll

The dlls that come with AnyConnect installation are not suitable for use in programs built with the API. As of 2.3, a COM API is available to interact with the installed VpnApi.dll directly. Please see the COM API documentation for more information.

## Debugging

Another issue when building your test client with the AnyConnect provided static libs has to do with the type of build. As debug builds are not shipped with the AnyConnect bundle, you will only be able to do Release builds.

This will not prevent you from debugging your code, it will just keep you from inspecting the AnyConnect internals. To debug your client implementation it is required that the pdb file reside in the same directory as the executable you are trying to debug.

For example, if your executable is csc_ui.exe you will need to have the file csc_ui.pdb in the directory with csc_ui.exe when you run csc_ui.exe in the debugger.

## Wide Character Support

The API is available on Windows in wide string format only. This means code using the API must also be built for Unicode support. On non-Windows platforms, the API is not built for wide-string support. The API still handles multibyte languages in this format.

# macOS and Linux

The required libraries and header files needed for macOS and Linux integration with the API are available in this bundle. The CLI example (example/CLI) contains build command examples for Linux and macOS platforms.

The AnyConnect libraries are built with Clang 18 for Linux and Apple Clang 15 for macOS.

Note: The non-Windows build scripts assume that AnyConnect is already installed.