On Linux with gcc, you will see two types of files: *.a archives (used to provide a set of functions for linking statically) and *.so , the so-called shared object library (for dynamic linking). Their *.lib equivalent for most compilers is *.lib and *.dll .
So *.a and *.dll are not interchangeable. In addition, you have a problem under Windows that *.lib can be used to bind statically and dynamically (with fixed addresses). Another way is to fully associate GetProcAddress dynamically with GetProcAddress , but in order to work with dll for different versions, it may require overhead to create a wrapper.
You can recognize static libs by their size, they are huge compared to the libs used for dynamic communications. In my projects, I really often get GetProcAddress , because I like the ability to just add new DLLs for old applications, without linking everything again.
source share