Difference between revisions of "Librerías Estáticas y Dinámicas"
Jump to navigation
Jump to search
Jgvictores (talk | contribs) |
Jgvictores (talk | contribs) |
||
Line 14: | Line 14: | ||
Para utilizar una librería, deberemos tener: | Para utilizar una librería, deberemos tener: | ||
− | * '''Las cabeceras'''. Las cabeceras son los ficheros con extensión '''.h''' o '''.hpp''' que contienen las ''declaraciones'' (también llamadas ''prototipos'') de las funciones. Una declaración muestra el nombre de la función, sus argumentos y valor de retorno, pero no toda la implementación asociada. Se invocan a través de la ''directriz de preprocesador'' (se llaman así porque se hace en la etapa de ''preprocesamiento'' del compilador) '''#include''', que realiza una simple sustitución. El compilador debe ser capaz de localizar las cabeceras. | + | * '''Las cabeceras'''. Las cabeceras son los ficheros con extensión '''.h''' o '''.hpp''' que contienen las ''declaraciones'' (también llamadas ''prototipos'') de las funciones [ver nota]. Una declaración muestra el nombre de la función, sus argumentos y valor de retorno, pero no toda la implementación asociada. Se invocan a través de la ''directriz de preprocesador'' (se llaman así porque se hace en la etapa de ''preprocesamiento'' del compilador) '''#include''', que realiza una simple sustitución. El compilador debe ser capaz de localizar las cabeceras. |
** En ''gcc'' de Linux, se utiliza el argumento '''-I''', como p.ej. en ''-I/usr/local/include''. | ** En ''gcc'' de Linux, se utiliza el argumento '''-I''', como p.ej. en ''-I/usr/local/include''. | ||
** En ''Visual Studio 9'', se pueden definir las rutas en Tools -> Options -> Projects and Solutions -> VC++ Directories -> Escoger ''Include Files'' del desplegable ''Show directories for''. | ** En ''Visual Studio 9'', se pueden definir las rutas en Tools -> Options -> Projects and Solutions -> VC++ Directories -> Escoger ''Include Files'' del desplegable ''Show directories for''. | ||
Line 22: | Line 22: | ||
** En ''Visual Studio 9'', se pueden definir las rutas en Tools -> Options -> Projects and Solutions -> VC++ Directories -> Escoger ''Library Files'' del desplegable ''Show directories for''. Se pueden definir los nombres de las librerías en Project -> Properties -> Configuration Properties -> Linker -> Input -> Escribir los nombres con extesión de los ''.lib'' (separados por retornos de carro en la ventana de selección). | ** En ''Visual Studio 9'', se pueden definir las rutas en Tools -> Options -> Projects and Solutions -> VC++ Directories -> Escoger ''Library Files'' del desplegable ''Show directories for''. Se pueden definir los nombres de las librerías en Project -> Properties -> Configuration Properties -> Linker -> Input -> Escribir los nombres con extesión de los ''.lib'' (separados por retornos de carro en la ventana de selección). | ||
** En ''CMake'' (solución multi-plataforma) se utiliza la ''directiva de CMake'' '''target_link_libraries()''' para el nombre de la librería. | ** En ''CMake'' (solución multi-plataforma) se utiliza la ''directiva de CMake'' '''target_link_libraries()''' para el nombre de la librería. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | [nota]: Una función que esté ''definida'' |
Revision as of 11:26, 10 June 2012
Una Librería es un conjunto de funciones. Es como un programa, sólo que no tiene función main(). Contiene funciones típicas para que sean llamadas desde algún otro programa o librería. Cualquier desarrollador puede crear una librería nueva.
Existen dos tipos de librerías: estáticas y dinámicas.
- Librerías Estáticas. Se enlazan al compilar, quedan "dentro" del ejecutable final. En Windows tienen la extensión .lib. En Linux tienen la extensión .a.
- Librerías Dinámicas. Se enlazan al ejecutar, el sistema operativo debe encontrarlas al ejecutar el programa. Si una aplicación se instaló bien, el sistema operativo no debe tener problema para encontrarla. En Windows tienen la extensión .dll. En Linux tienen la extensión .so.
Una librería puede estar pre-compilada, o nos pueden dar las fuentes. Si nos dan las fuentes, deberemos compilarla antes.
Para utilizar una librería, deberemos tener:
- Las cabeceras. Las cabeceras son los ficheros con extensión .h o .hpp que contienen las declaraciones (también llamadas prototipos) de las funciones [ver nota]. Una declaración muestra el nombre de la función, sus argumentos y valor de retorno, pero no toda la implementación asociada. Se invocan a través de la directriz de preprocesador (se llaman así porque se hace en la etapa de preprocesamiento del compilador) #include, que realiza una simple sustitución. El compilador debe ser capaz de localizar las cabeceras.
- En gcc de Linux, se utiliza el argumento -I, como p.ej. en -I/usr/local/include.
- En Visual Studio 9, se pueden definir las rutas en Tools -> Options -> Projects and Solutions -> VC++ Directories -> Escoger Include Files del desplegable Show directories for.
- En CMake (solución multi-plataforma) se utiliza la directiva de CMake include_directories().
- La librería compilada. El compilador debe saber dónde están las librerías estáticas.
- En gcc de Linux, se utiliza el argumento -L para definir la ruta, y -l para el nombre de la librería sin el prefijo lib y sin el sufijo .a.
- En Visual Studio 9, se pueden definir las rutas en Tools -> Options -> Projects and Solutions -> VC++ Directories -> Escoger Library Files del desplegable Show directories for. Se pueden definir los nombres de las librerías en Project -> Properties -> Configuration Properties -> Linker -> Input -> Escribir los nombres con extesión de los .lib (separados por retornos de carro en la ventana de selección).
- En CMake (solución multi-plataforma) se utiliza la directiva de CMake target_link_libraries() para el nombre de la librería.
[nota]: Una función que esté definida