C/Visual C - .dll y .h

 
Vista:

.dll y .h

Publicado por Clayder (16 intervenciones) el 07/04/2008 22:41:12
Hola:

Me gustaria me resuelvan una duda que tengo con respecto a los .h y .dll de C. Por ejemplo, cuando bajo un IDE para programar en C, éste viene con su compilador. En la carpeta en donde se instala este IDE, ademas vienen otras carpetas como include, libs, bin, etc.

Cuando yo programo en C y creo cabeceras(.h), generalmente incluyo dentro de ellas algunas funciones en comun y las implemento; sin embargo, veo que en los headers standar como stdio.h, estas funciones no estan implementadas, algo asi como si solo estuviese el prototipo.

Por esto, mi duda: ¿donde se implementan las funciones tales como printf(), scanf(), etc?. ¿Acaso esas funciones se encuentran implementadas en la carpeta /lib en forma de librerias estaticas o dinamicas?. Y si deseo trabajar con una libreria aparte -cualquiera que fuese-, ¿esta tambien funciona asi?, osea de headers y librerias estaticas y dinamicas. Y si es así, en java por ejemplo cuando tendo nuevas librerias, me basta agregar esa libreria a la variable de entorno classpath, ¿como puedo hacer entonces para que los headers, dlls, etc. sean reconocidos en un nuevo codigo C?, ¿tengo que agregar la ruta de estos a alguna otra variable de entorno?

Agradezco su respuesta de antemano, ya que estoy teniendo dificultades al usar una libreria aparte y me gustaria saber de raiz como funciona esto para no tener problemas con otras librerias que pueda usar.

Saludos.
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:.dll y .h

Publicado por Gilberto (31 intervenciones) el 08/04/2008 01:27:57
Depende del IDE en el que trabajes, por ejemplo, DevC te permite descargas de librerías que no vienen en el paquete estandar, vienen en la forma .h y .o, y tienes que incluirlas en el proyecto con una opción para agregar librerías, en Visual C++ tambien existe la opción de agregar las .dll con las funciones requeridas.
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:.dll y .h

Publicado por fernando.gomez (1603 intervenciones) el 08/04/2008 02:21:54
A tu primera pregunta, efectívamente se encuentran ya implementadas y compiladas en librerías que distribuye el compilador (y que por lo mismo, tú deberás redistribuir junto con tu aplicación), en la librería que comúnmente se llama "Runtime C Library".

En cuanto a tu segunda pregunta, más o menos. Es decir, necesitas el header (.h) de dicha librería para los tipos de datos y declaración de funciones. Y además necesitas decirle al compilador que enlace con tu librería, sea estática o dinámica. El cómo se hace eso, depende de cada compilador; cada uno tiene sus propios switches; y por lo general, en un IDE lo haces en la sección de "propiedades del proyecto". En Visual C++, por ejemplo, basta con que pongas el nombre de la librería en una lista separada por espacios. Por cierto, que en Windows al menos, cuando generas una DLL se genera su archivo .lib correspondiente, que contiene información sobre las funciones exportadas. Es decir, aparte de archivo.dll tendrías archivo.lib. Éste .lib es el que tienes que enlazar en tu compilador, pero la .dll es la que tiene que estar presente en el sistema, ya sea en el mismo directorio que el ejecutable o bien en alguna carpeta con visibilidad pública (digamos, system32 o en los directorios nombrados por PATH).

Saludos.
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