A dynamic-link library (DLL) is a module that contains functions and data that can be used by another module (application or DLL).
A DLL can define two kinds of functions: exported and internal. The
exported functions are intended to be called by other modules, as well
as from within the DLL where they are defined. Internal functions are
typically intended to be called only from within the DLL where they are
defined. Although a DLL can export data, its data is generally used only
by its functions. However, there is nothing to prevent another module
from reading or writing that address.
DLLs provide a way to modularize applications so that their
functionality can be updated and reused more easily. DLLs also help
reduce memory overhead when several applications use the same
functionality at the same time, because although each application
receives its own copy of the DLL data, the applications share the DLL