The figure below illustrates a simple case in which you create an application that uses a single dynamic-link library (.DLL) file.
┌──────────┐ ┌─────────┐ ┌─────────┐ ┌──────────┐
│ .OBJ and │ │.DEF file│ │.LIB file│ │ .OBJ and │
│.LIB files│ │(LIBRARY)│ │(imports)│ │.LIB files│
│ │ │(exports)│ │ │ │ │
└────┬─────┘ └──┬───┬──┘ └──┬───┬──┘ └────┬─────┘
│ │ │ │ │ │
└──────┬─────┘ │ └─────┬─────┘
│ └─(2) IMPLIB─┘ │
(1) LINK386 (3) LINK386
│ │
┌────┴────┐ ┌──────┴──────┐
│.DLL file│ │ .EXE file │
│(library)│ │(application)│
└─────────┘ └─────────────┘
As depicted above, linking occurs in three steps: