Does SDL_GetError() tell you anything useful ( printf("Can't load object %s : %s\n", modname, SDL_GetError());)?
Does dlopen() still work with RTLD_NOW | RTLD_LOCAL instead of RTLD_LAZY? Because that’s the flags that SDL passes.
If it doesn’t you might want to debug that (independently of SDL), if you’re on Linux, the LD_DEBUG environment variable might help, see http://www.bnikolic.co.uk/blog/linux-ld-debug.html and http://man7.org/linux/man-pages/man8/ld.so.8.html