Some aardvark components use reflection in order load Plugins such as:
- Third party image loading libraries
- Application side scene graph extensions
- 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:
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.