Skip to content

Runtime System and Native Dependencies

Attila Szabo edited this page Dec 22, 2023 · 1 revision

Introduction

Some aardvark components use reflection in order load Plugins such as:

  • Third party image loading libraries
  • Application side scene graph extensions
  • Custom OnStartup attributes
  • Native dependency unpacking

Those features are enabled by the Aardvark.Init() procedure. Since many aardvark components depend on those features it is absolute necessary to initialize the so called aardvark system as early as possible:

Aardvark.Init()

Native dependency unpacking

Some of our packages have unmanaged (i.e. non .NET) dependencies, which cannot be easily shipped with package managers (for all platforms). In order to overcome those issues aardvark libraries (such as Aardvark.Rendering.GL.dll) contain a resource file with native libraries for all supported platforms. Aardvark.Rendering.GL.dll for example, contains a zip file including AMD64 builds of glvm.dll, which is part of our rendering backend (written in C++).

Currently we unpack all native dependencies (of all componenents) at startup time into the executable's folder. This ensures that, we always have native libraries available for the current platform/OS etc. This unpacking only happens:

  • if it is necessary, i.e. the native library is not already present in the folder. This way, users can always overrule aardvarks native libraries with custom builds.
  • if it is possible, i.e. the application has write rights in its root folder.