What is the difference between a DLL and a LIB file? What is inside a DLL file and what is inside a LIB file? Are both DLL and LIB files necessary to create an executable?
问题:
回答1:
A DLL file is the final build product, that's what you install on your customer's machine. It is very similar to an EXE file, same structure, but can be loaded on demand into another program.
A LIB file is used to build your program, it only exists on your build machine and you don't ship it. There are two kinds. A static link library is a bag of .obj files, collected into a single file. The linker picks any chunks of code from the file when it needs to resolve an external identifier.
But more relevant to DLLs, a LIB file can also be an import library. It is then a simple small file that includes the name of the DLL and a list of all the functions exported by the DLL. You'll need to provide it to the linker when you build a program that uses the DLL so it knows that an external identifier is actually a function exported by the DLL. The linker uses the import library to add entries to the import table for the EXE. Which is then in turn used by Windows at runtime to figure out what DLLs need to be loaded to run the program.