[C con Clase] .dll o .a

Steven Davidson srd4121 en njit.edu
Mar Nov 2 02:52:21 CET 2010


Hola Yolmer,

2010/11/2 Yolmer Rosales <yolmer.rosales en gmail.com>

> quiero decir cuando desinstalo un programa algunas veces me pregunta
> si quiero eliminar el dll compartido, en realidad un dll lo puede usar
>

Sí, para eso mismo se usan DLL's; para que sean compartidas entre
ejecutables y otras DLL's.

más de un archivo? y en la vida real, se da el caso de que lo use? no
> lo se.
>
>
Sí; bastante. De hecho, muchos elementos y funcionalidades de MS-Windows
están en DLL's. Cuando una aplicación crea una ventana, invoca
'CreateWindowEx()' cuya definición está en "user32.dll". La única forma de
poder invocar a esta función por cualquier programa en cualquier momento de
una manera sencilla es usando DLL's.

pero siento que tengo algunas respuestas, aunque está todo esto
> enredado en mi cabeza. :-S
>
> en que casos se recomienda hacer una librería estática y en cual una
> dinámica.
>
>
Como ha mencionado Pedro, una biblioteca estática se agrega al ejecutable y
por tanto aumenta su tamaño, pero no se puede eliminar, por lo que no hay
conflictos con otras bibliotecas externas; esto puede ser ventajoso o no.
Una biblioteca dinámica puede ser compartida con otros programas y es más
fácil de actualizar, ya que las aplicaciones no tienen que ser actualizadas,
sólo porque se modifique algo en las bibliotecas dinámicas.

puede uno usar una dll que se haya instalado con algún programa de
> otro fabricante? bueno creo que esta pregunta es estup... Por supuesto
>

Sí, puedes.

que no necesito un archivo de cabecera. Cierto?
>
>
En general, sí necesitarás el archivo de cabecera, para que el compilador
sepa que las entidades que usas son realmente funciones y necesita conocer
sus prototipos. Recuerda que C/C++ son lenguajes FUERTEMENTE tipificados;
requieren conocer los tipos de todas las entidades.

Ahora bien, si conoces las funciones que están en las bibliotecas dinámicas,
entonces puedes escribir sus prototipos explícitamente, sin necesidad del
archivo de cabecera. Sin embargo, esto es poco usual y no es muy práctico en
muchas de las circunstancias.

las librerías que vienen con el compilador ninguna es dinámica verdad?
>

No es cierto, pero claro está, cada compilador puede o no usar bibliotecas
dinámicas. Los compiladores para MS-Windows seguramente usará la versión
dinámica de la biblioteca estándar, porque MS-Windows la ofrece en cualquier
versión de MS-Windows. Se llama "msvcrt.dll", aunque realmente existen otras
versiones: "msvcrt20.dll", "msvcrt40.dll", y algunas otras más.

quiere decir que al menos un trozo de código se debe repetir en cada
> ejecutable, se puede conseguir estas librerías en forma de dll?
>
>
Se puede crear una biblioteca dinámica a partir de una estática. La mayoría
de los compiladores trae alguna herramienta para esto; por ejemplo, Borland
trae "implib.exe" (si mal no recuerdo) y MinGW trae "dlltool.exe".


Espero que todo esto te vaya aclarando el tema.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20101102/bb5f40ae/attachment.html>


Más información sobre la lista de distribución Cconclase