Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Bibliotecas dentro de bibliotecas (estáticas)

Estas en el tema de Bibliotecas dentro de bibliotecas (estáticas) en el foro de C/C++ en Foros del Web. Hola a todos, soy nuevo por aquí y ya vengo a plantear una duda. Yo estoy creando una biblioteca en C++ que a su vez ...
  #1 (permalink)  
Antiguo 19/12/2012, 19:24
 
Fecha de Ingreso: diciembre-2012
Ubicación: Madrid, pero soy de Las Palmas
Mensajes: 6
Antigüedad: 12 años
Puntos: 0
Pregunta Bibliotecas dentro de bibliotecas (estáticas)

Hola a todos, soy nuevo por aquí y ya vengo a plantear una duda.

Yo estoy creando una biblioteca en C++ que a su vez usa otras bibliotecas mias o de tercero. Luego de crear esta biblioteca quiero hacer un programa que la use por lo que enlazo mi biblioteca y a su ves también las bibliotecas de terceros.

Mi pregunta es, las bibliotecas pueden tener enlaces estáticos? Es decir esta claro que una biblioteca no tiene enlaces dinámicos porque no hay que enlazar nada en tiempo de ejecución sería el ejecutable que use la biblioteca el que se encargaría en enlazar las bibliotecas de tercero. Pero podria mediante enlaces estáticos que en mi biblioteca ya se incluyera lo que se necesitara de bibliotecas de tercero, así mi ejecutable solo dependería de esta biblioteca.

No sé si me he explicado bien, espero que se entienda lo que planteo.
  #2 (permalink)  
Antiguo 20/12/2012, 09:07
Avatar de iblancasa  
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 143
Antigüedad: 12 años
Puntos: 16
Respuesta: Bibliotecas dentro de bibliotecas (estáticas)

Tu biblioteca la creas con archivos.
Añade a esos archivos, en la cabecera, los archivos de los que dependa mediante includes. Cuando quien sea añada tu biblioteca, estará añadiendo también esas otras bibliotecas.
Un saludo.
  #3 (permalink)  
Antiguo 20/12/2012, 12:54
 
Fecha de Ingreso: diciembre-2012
Ubicación: Madrid, pero soy de Las Palmas
Mensajes: 6
Antigüedad: 12 años
Puntos: 0
Respuesta: Bibliotecas dentro de bibliotecas (estáticas)

Si claro, hasta ahí si mediante los include tienes los headers, pero me refiero a la parte compilada los archivos objetos, los cpp, lo que sería los .a de unix y los .lib de windows eso es enlazado en tiempo de compilacion me refiero si una biblioteca tiene enlazados estaticos.
  #4 (permalink)  
Antiguo 20/12/2012, 16:46
Avatar de iblancasa  
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 143
Antigüedad: 12 años
Puntos: 16
Respuesta: Bibliotecas dentro de bibliotecas (estáticas)

Cita:
Iniciado por adrigm Ver Mensaje
Si claro, hasta ahí si mediante los include tienes los headers, pero me refiero a la parte compilada los archivos objetos, los cpp, lo que sería los .a de unix y los .lib de windows eso es enlazado en tiempo de compilacion me refiero si una biblioteca tiene enlazados estaticos.
Si los archivos con los que estás haciendo la biblioteca los tienen, sí.
Un saludo.
  #5 (permalink)  
Antiguo 20/12/2012, 16:57
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 4 meses
Puntos: 83
Respuesta: Bibliotecas dentro de bibliotecas (estáticas)

Te refieres a las librerias estaticas; lo que tu quires usar es la directiva #pragma, que consiste en instrucciones para el compilador, concretamente la de linkaje de librerias. Este pragma se declara dentro de la cabecera de tu libreria, como si fuese un include pero en vez de apuntar a otra cabecera apunta a otra libreria estatica.

La instruccion 'pragma' está definida en c++, pero el problema está en que los valores que puede tomar son diferentes en cada compilador. Puedes añadir mil #ifdef para determinar el compilador y declarar la directiva necesaria para ese compilador concreto (es decir para cada compilador al que quieras dar soporte); o tambien puedes distribuir un manual de referencia explicando las terceras dependencias de la libreria y la lista de librerias que el usuario de tu libreria debe linkar para que compile correctamente.

Saludos
vosk

Etiquetas: c++, enlazados, librerías
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:56.