I wrote:
Is there some combination of compiler macros and/or symbol macros that could be defined such that the appropriate DLL is loaded, the function pointer retrieved and then called, and then the DLL unloaded, at each call site? The reason I suggest that is that I see a similar approach being used in SWT (from Java) where they call DllGetVersion() from comctl32 and shell32, loading and unloading each DLL in turn. The function pointer is retrieved on-the-spot in both cases.
...which is essentially what Jörg suggested, I'm just saying maybe some macrology could hide the details.