A dynamic link library is a library that contains code and data that more than one program can use at the same time. DLLs have the same file format as executables, or EXE files, but are not directly executable. DLLs contain functions, classes, variables, and resources such as icons and images that EXEs or other DLLs use. Dynamically linked libraries are not linked at compile time like static libraries, but at run-time, allowing for greater modularization of code.
One of the greatest benefits to using dynamically linked libraries is code modularization, or the storage of related functions and data together into modules, As an example, in Windows the Comdlg32.DLL performs common dialog box-related functions such as opening a file. By using a single shared source, all programs have access to the same Open dialog box functionality. This modularization of code allows the operating system to load faster, run faster, use less memory and use less disk space while allowing many different programs access to the functionality using a consistent user interface across programs. Changes made to the code do not require the recompilation of code in any number of statically linked programs, but merely the restarting of programs linking dynamically to a shared code source.