Thus if a developer makes an improvement to an exported function, changing the function's module file effectively updates all applications that link to the function. For example, each new release of Windows contains fixes to functions used by all Windows based applications. Imagine the problems that would arise if each application had to be updated to support an improvement in the operating system. Before you can understand dynamic linking, you must first understand what linking means and why it is necessary. Software is made up of instructions grouped in logical sections called subroutines or functions.
Most functions perform a specific task based on a set of input and output variables.
These individual functions are able to use or call each other using a process called linking. Calling one function from another function is based on knowing the address or location of each function. Once this address is known, the calling function executes or passes control to the called function. When the called function completes, control is returned to the calling function. Linking is simply the process of placing the address of a called function into the calling function's code.