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.

Reply via email to