-
Notifications
You must be signed in to change notification settings - Fork 5
Runtime System and Native Dependencies
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()
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.