You copy that specific version of the DLL into *that* program's folder only :wink: Sure, it's annoying to do that, but ... it IS a sign of a badly written program/library so either way, there's other things to worry about.
Program size isn't the only reason I dynamically link quite a bit of my code ... although I'd dynamically link the Delphi libraries too (and have 20KB EXE's, like the VC ones) if they weren't so goddamn big... but updating a shared library is a nice idea.
Actually, FMOD has a semi-nice solution to this; when their DLL gets updated if a function 'breaks compatibility' with the older version of the function it gets a new name (like FSOUND_Load_Sound_322) and includes the older version too. So older programs are still using older code ... but if the function is simply better without changing the way it works at all, the name stays the same - so older programs DO use the newer bugfixed versions when possible. Of course, the import library doesn't name the functions with version numbers so you as a programmer just call FSOUND_Load_Sound, but it IS a good solution. Slightly bigger DLL, but generally speaking it maintains compatibility well.