C/Visual C - Diferencia entre libreria estatica y dinamica

 
Vista:

Diferencia entre libreria estatica y dinamica

Publicado por Angel Romero (14 intervenciones) el 10/12/2005 11:25:29
Hola a todos;

Voy a implementar una libreria estatica para reutilizar codigo en otros programas, y asi, facilitar su uso. Pero, llegado a este punto, me pregunto cual es la diferencia entre una libreria estatica y una dinamica; Acaso la dinamica esta ya compilada o que es? Es por algo de la memoria estatica y dinamica???

Gracias por anticipado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Diferencia entre libreria estatica y dinamica

Publicado por JuanC (57 intervenciones) el 10/12/2005 13:34:39
En realidad la diferencia radica en cómo se carga la librería:
en el cargado estático la .DLL se carga automáticamente al iniciar el programa
y si ésta no está, el programa no funciona; además permanecerá en memoria
mientras el programa esté corriendo;
en el cargado dinámico la .DLL se carga cuando se va a utilizar y luego se descarga lo que hace que al iniciar el programa éste se cargue más rápido.
Para el cargado dinámico debes utilizar la API (LoadLibrary, GetProcAddress, FreeLibrary)

Espero que sirva de algo...
Saludos y buena suerte, desde Buenos Aires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Diferencia entre libreria estatica y dinamica

Publicado por chuidiang (73 intervenciones) el 10/12/2005 21:00:08
Hola:

No sé si en windows es exactamente igual que en linux, pero la diferencia es la siguiente.

Una librería estática (.lib en windows, .a en linux) se carga al compilar el programa. Las funciones necesarias de esa librería se copian en tu ejecutable. Si te llevas el ejecutable de un ordenador a otro, el programa funcionará igualmente, aunque en el nuevo ordenador no esté la librería, ya que el ejecutable tiene su propia copia. El problema es que el ejecutable será más grande, ya que lleva copia de las funciones de la librería.

Una librería dinámica (.dll en windows, .so en linux) se carga en el momento de la ejecución del programa, según las va necesitando. El ejecutable NO lleva copia de las funciones de la librería y necesita la librería para funcionar. Si te llevas el ejecutable a otro ordenador, debes llevarte también la librería o asegurarte que ya está allí. La ventaja es que el ejecutable suele ser más pequeño.

Habitualmente las librerías que se usan en muchos programas o que están en el sistema operativo suelen ser dinámicas, ya que es fácil que el ordenador las tenga instaladas y te ahorra tener varias copias de ellas en varios ejecutables.

Las librerías que usa un solo programa es mejor hacerlas estáticas, salvo que sean muchas y muy grandes y te generen un ejecutable gigantesco poco manejable. Te da igual distribuir un programa pequeño con una librería al lado que sólo el programa, pero un poco más grande.

Puedes ver algo más de todo esto en http://www.geocities.com/chuidiang/herramientas/librerias.html

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Diferencia entre libreria estatica y dinamica

Publicado por Angel Romero (14 intervenciones) el 10/12/2005 21:25:37
Muchas gracias a los dos. He aclarado la duda que tenia.

Hasta otra
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar