On Thursday, 2 April 2015 at 07:56:19 UTC, Mike Parker wrote:
On 4/2/2015 11:36 AM, Craig Dillabaugh wrote:
derelict.util.exception.SymbolLoadException@../../../.dub/packages/derelict-util-1.9.1/source/derelict/util/exception.d(35):
Failed to load symbol SDL_HasAVX from shared library libSDL2.so
This error message is telling you two things. First, SDL is
installed on your system and the loader found it just fine.
Second, the loader was unable to find the SDL_HasAVX function
in libSDL2.so.
SDL_HasAVX was added to the API in SDL 2.0.2, so you have an
older version installed on your system and DGame is attempting
to load a more recent version. Derelict will load either SDL
2.0.2 or 2.0.3. The latter is the latest release, but there are
no API differences between them.
From your end, the solution is to install the latest version of
SDL2. Another solution is for DGame to take advantage of the
SharedLibVersion feature of Derelict to set a minimum
acceptable version of SDL. For example, if DGame doesn't use
any API features added to SDL since 2.0.0, then this will allow
any version of SDL2 to load:
DerelictSDL2.load(SharedLibVersion(2,0,0));
Bye bye SymbolLoadException. Then again, loading the older
versions makes it possible for DGame to be affected by SDL bugs
that have since been fixed, so I make no judgement on whether
or not it's worth it.
Dgame is based on SDL 2.0.3 (as described in the installation
tutorial), but tries to "wrap" any function call which is
introduced after SDL 2.0.0:
----
static if (SDL_VERSION_ATLEAST(2, 0, 2))
----
so that Dgame should be usable with any SDL2.x version.
I will investigate which function is calling SDL_HasAVX.