Hay bibliotecas estáticas (LIB) y bibliotecas dinámicas (DLL), pero tenga en cuenta que los archivos .LIB pueden ser bibliotecas estáticas (que contienen archivos de objetos) o bibliotecas de importación (que contienen símbolos para permitir que el vinculador se vincule a una DLL).
Las bibliotecas se usan porque puede tener el código que desea usar en muchos programas. Por ejemplo, si escribe una función que cuenta el número de caracteres en una cadena, esa función será útil en muchos programas. Una vez que haga que la función funcione correctamente, no querrá tener que volver a compilar el código cada vez que la use, por lo que coloca el código ejecutable para esa función en una biblioteca, y el enlazador puede extraer e insertar el código compilado en su programa . Las bibliotecas estáticas a veces se denominan 'archivos' por este motivo.
Las bibliotecas dinámicas llevan esto un paso más allá. Parece un desperdicio tener múltiples copias de las funciones de la biblioteca ocupando espacio en cada uno de los programas. ¿Por qué no pueden todos compartir una copia de la función? Para eso están las bibliotecas dinámicas. En lugar de compilar el código de la biblioteca en su programa cuando se compila, se puede ejecutar asignándolo a su programa a medida que se carga en la memoria. Varios programas que se ejecutan al mismo tiempo y usan las mismas funciones pueden compartir una copia, ahorrando memoria. De hecho, puede cargar bibliotecas dinámicas solo según sea necesario, dependiendo de la ruta a través de su código. No tiene sentido que las rutinas de la impresora tomen memoria si no está imprimiendo. Por otro lado, esto significa que debe tener una copia de la biblioteca dinámica instalada en cada máquina en la que se ejecuta su programa.
Como ejemplo, casi todos los programas escritos en 'C' necesitarán funciones de una biblioteca llamada 'biblioteca de tiempo de ejecución C, aunque pocos programas necesitarán todas las funciones. El tiempo de ejecución C viene en versiones estáticas y dinámicas, por lo que puede determinar qué versión usa su programa dependiendo de las necesidades particulares.