Static libraries-Collection of common programming errors

No, they just allow you to use static linking with DLLs. The executable file contain a list of functions that it needs from other DLL files, so when the executable file is loaded the loader parses this list and resolves each function with LoadLibrary and GetProcAddress, saving result to a static table (IAT, Imported Address Table). This is done only once. There is also the notion of “delayed load” of DLL, that will resolve the address only when the function is call for the first time, but it’s rarely used.

In this way the lib file for a DLL contains just information needed to build that list (names of exported functions).