C++ UA Server SDK
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
C++ UA Server SDK Documentation


The UA SDK is a C++ library that supports you in writing portable C++ OPC UA Servers and Clients. The UA SDK actually consists of two SDKs, a Server SDK and a Client SDK. Both use the same UA Base Library which does all the C++ encapsulation of the raw ANSI C types that are defined in the OPC UA Communication Stack by the OPC Foundation (http://www.opcfoundation.org).

For an introduction to the Server or Client part of the SDK refer to the following pages:

UA SDK Architecture Overview

Binary SDK

The SDKs are available as binary versions for Windows and Linux. On Windows, Visual Studio 2008 SP1 and Visual Studio 2010 SP1 are supported. On Linux, GCC 4.5.1 is supported.

Source SDK

The SDKs are also available as source versions. This means that all sources of the components are included.

The Source SDK is the right solution for you if you plan to port your application to new operating systems (e.g. embedded systems), if you want to compile the libraries optimized for your CPU for maximum performance, or if you just want to have full control over your complete application.

If you compile the libraries yourself, you can choose to build static libraries or dynamic libraries. Using static libraries you can create a single binary that includes all dependencies, whereas with dynamic libraries you have more flexibility in updating individual parts of your software (e.g. update the uastack to a newer version without recompiling your whole software).


Portability is guaranted by a concept of portability layers. The rest of the code is generic code that is independent of the operating system and can be reused without any changes. The UA Communication Stack has a portability layer that encapsulates already the most important operating system calls like Sockets, Semaphores, Mutexes, Threads, etc. The Ua Base Library is built on top of this UA Stack and does not need any further portability layer. The same applies for the software layers built on top of the UA Base Library.

The additional base modules UA PKI Library and UA XML Library are further abstraction layers that encapsulate special software components. We use the Open Source projects OpenSSL and LibXML2 to implement that functionality, because it’s good software, it’s ported already to several operating systems and they don’t have restrictive licenses like the GPL. But if your company polices don’t allow to use any Open Source for whatever reason, it’s possible to change this without a need to change anything else in the upper layers of the SDK or your application. Aside from simplifying the usage of these libraries this was main reason why we encapsulated this functionality with our own interface and don’t use the Open Source code directly in our SDKs.

Table of Contents

This manual provides a class reference and general introductions in the following sections: