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?
相关问题
- How to know full paths to DLL's from .csproj f
- How do shader compilers work?
- C++ Builder - Difference between Lib and Res
- Mathjax not rendering TEX formulas dynamically fro
- Direct2D Only Partially Linking in C++ Builder
相关文章
- vs2017wpf项目引用dll的路径不正确的问题
- Angular Material Stepper causes mat-formfield to v
- Private static variables in php class
- Determine if an executable (or library) is 32 -or
- MPI and D: Linker Options
- How to force Delphi compiler to display all hints
- Passing static array in attribute
- Xcode - How to change application/project name : w
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.