The ltdl is much more powerful, but we don't need all of that and it pulls additional complexity, while we are already using libuv for the rest of the BIND 9 code. The libuv shared library handling interface is a multiplatform and modeled after dlopen/dlsym interface which makes the conversion to be very easy.