A DLL is a dynamic link library. It provide a way of sharing common code at runtime . Any appication( exe) can load a dll in to memory at runtime, retrieving the address of the fuctions to be called / accessing resources or variables. client can use the functions, variable or resources and unloads the dll from memory. One can load the dlls either statically or dynamically. Dynamically loading - HANDLE h = LoadLibrary("MyDll.dll"); // load dll typedef FUNPTR (void) (*funcPtr ) (); // create a fuction pointer with matching signature // with that of exported function from dll. FUNPTR show = GetProcAddress( h, "Show"); // Get function address show(); // Call the fuction FreeLibrary(h); // unload dll from memory Statically loading: Include the .h file and specify .lib file to the linker for specified dll. User can access the dll content ( Exported fuctions, resources, variables) at compile time itself. Regular, Extension and pure Win32 DLL (without MFC) Regular DLL Regul...