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