Download Lenguajes de Programación 2
Document related concepts
no text concepts found
Transcript
Leng uajes de Prog ramación 2 Librerías PUCP, Lenguajes de Programación 2 Diapositiva 1 Introducción • Una librería es un programa cuyos elementos pueden ser utilizados por otros programas . • La forma de crear y utilizar una librería dependen del lenguaje de programación o del sistema operativo. PUCP, Lenguajes de Programación 2 Diapositiva 2 Librerías en C /C ++ • D os tipos – E státicas: E nlazadas con los O B J’s para forman un nuevo programa. – D inámicas: E nlazadas con el programa en tiempo de ejecución. PUCP , Lenguajes de Programación 2 Diapositiva 3 Librerías en C /C ++ • Librerías E státicas – Forman parte del programa final – P ara utilizarlas hay que agregarlas al proceso de enlace. S i se utiliza un ID E , se agrega junto con los archivos fuente. PUCP , Lenguajes de Programación 2 Diapositiva 4 Librerías en C /C ++ • Librerías D inámicas – NO forman parte del programa final. – S on ejecutadas por los hilos de los procesos que las utilizan. – E xponen un conjunto de funciones exportadas. – La llamada a una función exportada es mapea al espacio de direc. del hilo llamador. PUCP , Lenguajes de Programación 2 Diapositiva 5 Librerías en C /C ++ • Librerías D inámicas, E structura Índice DLL Tabla de exportación Nombre de Dirección de la función la función 1 Nombre 1 Dirección 1 2 Nombre 2 Dirección 2 . . . . . . . . . N Nombre N Dirección N Datos y código de la librería PUCP , Lenguajes de Programación 2 Diapositiva 6 Librerías en C /C ++ • Librerías D inámicas, C reación – E n un ID E , crear un proyecto especificando el tipo adecuado para un D LL. – Agregar los archivos • *.H: P rototipos de las funciones exportadas. • *.C o *.C P P : Implementación. – Indicar las funciones exportables usando • __declspec (dllexport) ó • *.D E F: D eclaración de las funciones a exportar. – C ompilar. PUCP , Lenguajes de Programación 2 Diapositiva 7 Librerías en C /C ++ • Librerías D inámicas, E jemplo – Archivo cabecera: M iLibreria.H #include <windows.h> #ifdef __cplusplus extern “C” { #endif void Saludame(char * szNombre); #ifdef __cplusplus } #endif PUCP , Lenguajes de Programación 2 Diapositiva 8 Librerías en C /C ++ • Librerías D inámicas, E jemplo – Archivo implementación: M iLibreria.cpp BOOL WINAPI DllMain ( HANDLE hModule, DWORD dwReason, LPVOID lpReserved ) { switch ( dwReason ) { case DLL_PROCESS_ATTACH: break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; case DLL_PROCESS_DETACH: break; } return TRUE; } PUCP , Lenguajes de Programación 2 Diapositiva 9 Librerías en C /C ++ • Librerías D inámicas, E jemplo – Archivo implementación: M iLibreria.cpp #include "MiLibreria.h" BOOL WINAPI DllMain ( ... ) { // Aqui va lo indicado en la anterior diapositiva } void Saludame(char* szNombre) { printf("Hola %s \n", szNombre); } PUCP , Lenguajes de Programación 2 Diapositiva 10 Librerías en C /C ++ • Librerías D inámicas, E jemplo – Indicar funciones exportable • Archivo implementación: M iLibreria.def LIBRARY SALUDAMEDLL DESCRIPTION "Implementación de una DLL" EXPORTS Saludame @1 • Usando #include <windows.h> #ifdef __cplusplus extern “C” { #endif __declspec (dllexport) void Saludame(char * szNombre); #ifdef __cplusplus } #endif PUCP , Lenguajes de Programación 2 Diapositiva 11 Librerías en C /C ++ • Librerías D inámicas, Utilización – M odo implícito • S e utiliza el archivo LIB generado al compilar la D LL, en la configuración correspondiente al ID E . • S e incluye el archivo cabecera de la D LL en los archivos de implementación que llamen a alguna de las funciones exportadas. PUCP , Lenguajes de Programación 2 Diapositiva 12 Librerías en C /C ++ • Librerías D inámicas, Utilización – M odo implícito, ejemplo #include "MiLibreria.h" int main( ... ) { Saludame("JUAN"); return 0; } PUCP , Lenguajes de Programación 2 Diapositiva 13 Librerías en C /C ++ • Librerías D inámicas, Utilización – M odo explícito: • S e utilizan las funciones del AP I de Windows • LoadLibrary • FreeLibrary • GetP rocAddress • S e utilizan punteros a función adecuador para cada función exportada que se desee utilizar. PUCP , Lenguajes de Programación 2 Diapositiva 14 Librerías en C /C ++ • Librerías D inámicas, Utilización – M odo explícito, E jemplo #include <windows.h> typedef void (* PFUNC) (char *); int main( ... ) { HINSTANCE hDll = LoadLibrary(“MyDll.dll”); if ( hDll != NULL ) { PFUNC pfnSaludo = (PFUNC)GetProcAddress(hDll, “Saludame”); if( pfnSaludo != NULL ) pfnSaludo(“María”); FreeLibrary( hDll ); } return 0; } PUCP , Lenguajes de Programación 2 Diapositiva 15 Librerías en C /C ++ • Librerías D inámicas, M ecanismo de búsqueda – E n el directorio donde se encuentra el ejecutable de la aplicación. – E n el directorio de trabajo actual – E n el directorio S ystem. S i es NT o Windows 2000, en el directorio S ystem32 . – E n el directorio de Windows . – E n la lista de directorios de la variable P ATH . PUCP , Lenguajes de Programación 2 Diapositiva 16 Librerías en Java • D efiniciones – E stán estrechamente relacionadas a los directorios. – Una librería es un directorio con un conjunto de archivos C LAS S que forman parte de la librería. – Las librerías reciben el nombre de paquetes. – P ara encontrar una librería, tanto el compilador como el intérprete utilizan la variable de entorno C LAS S P ATH PUCP , Lenguajes de Programación 2 Diapositiva 17 Librerías en Java • C reación – P ara indicar que las clases implementadas en un archivo .JAVA pertenecen a un paquete, se coloca como primera línea del archivo la instrucción: package NombreD elP aquete; – Adicionalmente, los archivos C LAS S generados deberán de copiarse a una carpeta con el nombre del paquete. PUCP , Lenguajes de Programación 2 Diapositiva 18 Librerías en Java • E jemplo – D eseamos crear dos clases A y B que formen parte de un nuevo paquete M iP aquete. E l archivo .JAVA ´podría s er: // Archivo: MisClases.java package MiPaquete; public class A {} public class B {} PUCP , Lenguajes de Programación 2 Diapositiva 19 Librerías en Java • E jemplo – C reamos un programa que instancie las clases A y B. P ara esto debemos de crear un directorio M iP aquete en el mismo directorio donde se compilará y ejecutará este programa. // Archivo: ProbandoMiPaquete.java import MiPaquete; class ProbandoMiPaquete { public static void main(String[] args) { A objA = new A(); B objB = new B(); } } PUCP , Lenguajes de Programación 2 Diapositiva 20 Librerías en Java • Archivos JAR – C omprimen uno o más paquetes conservando la información acerca de los directorios (paquetes ) donde s e encuentran cada archivo .C LAS S . – P ueden ser utilizados en C LAS S P ATH como lugares de búsqueda de archivos .C LAS S . – C onstituyen una mejor forma distribuir un conjunto de archivos .C LAS S , como los que forman una aplicación, dado que se tiene la opción de comprimir estos. PUCP , Lenguajes de Programación 2 Diapositiva 21 Librerías en Java • Archivos JAR , C reación – S e utiliza el programa “jar.exe”, instalado por el JD K. – E jemplo 1: C reación del P aq1.jar jar cvf Paq1.jar Foo.class Bar.class – E jemplo 2: Utilización de un archivo de manifies to manifiesto.mf y empaquetado de todos los .C LAS S en el directorio Foo jar cvfm Paq2.jar manifiesto.mf -C foo/ . PUCP , Lenguajes de Programación 2 Diapositiva 22