dll vs. lib?

cyberschnuggie
06 de Febrero del 2004
Hola,
estoy programando uno de mis primeros projectos en c++ con el visual c++ 6 y no estoy muy seguro de que tengo que usar: en que casos deberia crear una dll y en que casos una lib?

saludos,
cs

Alejandro
06 de Febrero del 2004
Bueno, eso depende de cual vaya a ser el destino de tu .LIB o .DLL.

Las LIB son de dos tipos: "Static Link Library" o "Import Library", que en cuanto a uso son muy parecidas, pero hacen lo suyo de forma diferente.
Una Static Link Library contiene el código de todas las funciones que incluye, el que es va a agregar al código de tu EXE (por el Linker); esto le aumenta el tamaño pero todas sus funciones las lleva encima. Si en un mismo equipo van a correr muchas aplicaciones que incluyen las mismas LIB, quizás convenga usar DLLs.

Una Import Library sólo contiene el código necesario para enlazar tu aplicación con una .DLL. Es mucho más chiquita que la anterior, pero no hace otra cosa más que facilitar el uso de DLLs.

La diferencia entre una SLL y una DLL es que ésta no agrega su código al ejecutable. Tiene que estar disponible en la máquina donde vaya a correr el programa, y su código se va a agregar a la imagen en RAM del que la use. Si uno modifica una DLL (con cuidado, claro), los programas ya hechos que la usan no necesitan ser recompilador.

Entonces, más o menos puede simplificarse diciendo que una LIB es cosa del "link time", mientras que una DLL es cosa del "run time".

Y no sé más.

Alejandro