This blog post mentions how to create your own shims.
What I don't understand is:
When a newer version of a DLL comes out (with more exported functions), wouldn't this technique break?
i.e. If you completely override the target DLL with a shim DLL, then what do you do about functions that you didn't/couldn't implement a redirection for?