Derelict SDL2 library not loading on OS X

Mike Parker via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Dec 19 05:04:19 PST 2014


On 12/19/2014 7:35 PM, Joel wrote:
> Now I get this:
>
> Joels-MacBook-Pro:dere joelcnz$ ./app
> derelict.util.exception.SymbolLoadException at source/derelict/util/exception.d(35):
> Failed to load symbol SDL_GameControllerAddMapping from shared library
> /usr/local/lib/libSDL2.dylib

OK, it looks like you're actually using a prerelease version of SDL 2. 
SDL 2.0.0 was released with this function, but several beta versions of 
SDL 2 were released without it (the game controller mapping API was 
added a few months before the final 2.0.0 release).

Please uninstall this version of SDL from your system and use one of the 
release versions.

For future reference, when you see missing symbol errors like this, it 
almost always means that you are trying to load an older version of the 
library. You can solve this by doing exactly what I just did -- looking 
through the repository history of the library in question. That can help 
you decide which of the three options I outlined in the previous answer 
is best.

In this case, I used the online mercurial repo browser for SDL 2 [1]. I 
selected the "release-2.0.0" tag, then clicked "include", then clicked 
the file link for "SDL_GameController.h". I used Ctrl-f in my web 
browser to search for SDL_GameControllerAddMapping and found it was 
there. I then went back to the include directory, clicked "revisions" 
for the same header and found that the function was added in a commit 
dated 05 March 2013 [2]. I then looked at the date of the SDL 2.0.0 tag 
and found it is 11 Aug 2013 [3]. Therefore, if your copy of SDL is 
missing this file, it is either a prerelease version or it is corrupt, 
with the former being more likely.

[1] https://hg.libsdl.org/SDL
[2] https://hg.libsdl.org/SDL/rev/c8aa24f05042
[3] https://hg.libsdl.org/SDL/rev/d6a8fa507a45



More information about the Digitalmars-d-learn mailing list