Works fine for me on windows, after running 'dub upgrade'.
I tested the SharedLibVersion with a 2.0.1 and a 2.0.3 SDL dll.
With the 2.0.3 dll, I could call functions added in SDL 2.0.2
even when using SharedLibVersion(2, 0, 0) - is this intended
behaviour?
With the 2.0.1 DLL I got the expected 'Failed to load symbol'
error without using the SharedLibVersion, or using
SharedLibVersion(2, 0, 2).
However, if I call one of the functions added in SDL 2.0.2 when
loading the 2.0.1 context, I get an 'object.Error@(0): Access
violation' error. Would it be possible to get a more informative
error message in this case?
Highly appreciate your work on Derelict, BTW.
On Wednesday, 31 December 2014 at 01:35:32 UTC, Mike Parker wrote:
I've added a new feature to Derelict that I'd appreciate some
feedback on. It works for me, but I want to verify that it
works in the wild before I expand it to other packages and move
forward with another feature I plan to add. You can read more
about it in my blog post at [1].
If you are using DerelictSDL2 in a project, I'd appreciate it
if you'd change your dependency to "derelict-sdl2": ">=1.9.0"
and let me know if it breaks your build or not. And if you
aren't using any of the functions added in SDL 2.0.2, then I'd
also appreciate it if you'd test the new feature as described
in the blog post:
// If you require functions in 2.0.1
DerelictSDL2.load( SharedLibVersion( 2, 0, 1 ));
// If you don't need any functions beyond 2.0.0
DerelictSDL2.load( SharedLibVersion( 2, 0, 0 ));
The goal is to allow you to load any version of SDL that your
app can support from one package. I've noticed that most people
tend to use the highest version of DerelictSDL2 (1.2.x), which
only loads SDL 2.0.2 and 2.0.3 and will fail with the lower
versions, even though they aren't using any of the newer API
additions.
If you have a package you maintain that uses DerelictUtil for
loading, you do not need to implement this yourself. It is
entirely optional. Not all DerelictOrg packages will get this.
However, if it makes sense in the context of the library you
are loading, please consider implementing it and letting me
know how it goes. Essentially, you'll need to change your
dependency to "derelict-util":">=1.9.0" and override the new
protected method configureMinimumVersion in your loader to
install a library-specific MissingSymbolCallback. I've linked
an example in the blog post.
[1] http://dblog.aldacron.net/new-derelict-feature/