Professional Documents
Culture Documents
Un archivo DLL es una biblioteca que contiene el cdigo y los datos que se
pueden utilizar por ms de un programa al mismo tiempo. Por ejemplo, en
sistemas operativos Windows, el archivo Comdlg32 DLL realiza comn
funciones relacionadas con el cuadro de dilogo. Por lo tanto, cada programa
puede usar la funcionalidad contenida en este archivo DLL para implementar
un cuadro de dilogo Abrir. Esto ayuda a promover la reutilizacin de cdigo y
el uso eficaz de la memoria.
Mediante el uso de un archivo DLL, un programa puede ser modular en
componentes separados. Por ejemplo, un programa de contabilidad puede
venderse por mdulo. Cada mdulo puede cargarse en el programa principal
en tiempo de ejecucin, si est instalado el mdulo. Dado que los mdulos son
independientes, el tiempo de carga del programa es ms rpido y un mdulo
slo se carga cuando se solicita esa funcionalidad.
Adems, las actualizaciones son ms fciles de aplicar a cada mdulo sin
afectar a otras partes del programa. Por ejemplo, puede que un programa de
nminas y los tipos impositivos cambian cada ao. Cuando estos cambios se
aslan en un archivo DLL, puede aplicar una actualizacin sin necesidad de
generar o vuelva a instalar el programa.
La lista siguiente describe algunos de los archivos que se implementan como
archivos DLL en los sistemas operativos Windows:
Dependencias de DLL
Cuando un programa o un archivo DLL utiliza una funcin DLL en otro archivo
DLL, se crea una dependencia.
Dlister.exe
Esta utilidad enumera todos los archivos DLL en el equipo y registra la
informacin en un archivo de texto o a un archivo de base de datos.
Dcomp.exe
Esta utilidad compara los archivos DLL que se enumeran en dos archivos
de texto y produce un tercer archivo de texto que contiene las
diferencias.
Dtxt2DB.exe
Esta utilidad carga los archivos de texto que se crean mediante la utilidad
Dlister.exe y la utilidad de Dcomp.exe en la base de datos de dllHell.
DlgDtxt2DB.exe
Esta utilidad ofrece una versin de interfaz grfica de usuario de la
utilidad Dtxt2DB.exe.
Para obtener ms informacin acerca de la herramienta de duplicados, haga
clic en el nmero de artculo siguiente para verlo en Microsoft Knowledge Base:
247957 Uso de DUPS.exe para resolver problemas de compatibilidad DLL
Base de datos DLL Help
La base de datos DLL Help le ayudar a encontrar las versiones especficas de
archivos DLL que estn instaladas por los productos de software de
Microsoft. Para obtener ms informacin acerca de la base de datos DLL Help,
visite el siguiente sitio Web de Microsoft:
Desarrollo de DLL
Esta seccin describe los problemas y los requisitos que debe tener en cuenta
al desarrollar las DLL.
Tipos de archivos DLL
Cuando se carga un archivo DLL en una aplicacin, dos mtodos de
vinculacin permiten llamar a las funciones exportadas del archivo DLL. Los
dos mtodos de vinculacin son vinculacin dinmica en tiempo de carga y
vinculacin dinmica en tiempo de ejecucin.
Vinculacin dinmica en tiempo de carga
En la vinculacin dinmica en tiempo de ejecucin, una aplicacin llama a la
funcin LoadLibrary o a la funcinLoadLibraryEx para cargar el archivo DLL
en tiempo de ejecucin. Despus de la DLL funcin de DLL ha cargado
correctamente, utilice la funcin GetProcAddress para obtener la direccin de
la exportacin, que que desea llamar. Cuando se utiliza la vinculacin dinmica
en tiempo de ejecucin, no es necesario un Importar archivo de biblioteca.
En la lista siguiente describe la aplicacin criterios de cundo se debe utilizar la
vinculacin dinmica en tiempo de carga y cundo se debe utilizar el tiempo de
ejecucin vinculacin dinmica:
Rendimiento de inicio
Si el rendimiento de inicio de la aplicacin es importante, que debe
utilizar la vinculacin dinmica en tiempo de ejecucin.
Facilidad de uso
En la vinculacin dinmica en tiempo de carga, son las funciones DLL
exportadas al igual que las funciones locales. Ello resulta ms fcil para
llamar a estos funciones.
Lgica de la aplicacin
En la vinculacin dinmica en tiempo de ejecucin, una aplicacin puede
bifurcar a cargar mdulos diferentes segn sea necesario. Esto es
importante cuando se desarrolla versiones de varios idiomas.
#include "sampleDLL.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
void HelloWorld()
{
MessageBox( NULL, TEXT("Hello World"), TEXT("In a DLL"), MB_OK);
}
// File: SampleDLL.h
//
#ifndef INDLL_H
#define INDLL_H
#ifdef EXPORTING_DLL
extern __declspec(dllexport) void HelloWorld() ;
#else
extern __declspec(dllimport) void HelloWorld() ;
#endif
#endif
El cdigo siguiente es un ejemplo de un archivo DLL que se cre en Visual C++
con el tipo de proyecto de Biblioteca de vnculos dinmicos Win32 .
// SampleApp.cpp
//
#include "stdafx.h"
#include "sampleDLL.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int
nCmdShow)
{
HelloWorld();
return 0;
}
El cdigo siguiente es un ejemplo de un proyecto de Aplicacin Win32 que
llama a la funcin exportada del archivo DLL en la DLL SampleDLL.
En la vinculacin dinmica en tiempo de ejecucin, utilice cdigo similar al el
siguiente cdigo para llamar a la SampleDLL.dll exporta la funcin DLL.
...
typedef VOID (*DLLPROC) (LPTSTR);
...
HINSTANCE hinstDLL;
DLLPROC HelloWorld;
BOOL fFreeDLL;
hinstDLL = LoadLibrary("sampleDLL.dll");
if (hinstDLL != NULL)
{
HelloWorld = (DLLPROC) GetProcAddress(hinstDLL, "HelloWorld");
if (HelloWorld != NULL)
(HelloWorld);
fFreeDLL = FreeLibrary(hinstDLL);
}
...
En vinculacin dinmica en tiempo de ejecucin, se utiliza cdigo similar al
siguiente cdigo para llamar a la SampleDLL.dll exporta la funcin DLL.
1. La carpeta de aplicacin
2. La carpeta actual
3. La carpeta de sistema de Windows
Nota La funcin GetSystemDirectory devuelve la ruta de acceso del
sistema Windows carpeta.
4. La carpeta de Windows
Nota La funcin GetWindowsDirectory devuelve la ruta de acceso de la
carpeta de Windows.
Archivo DLL de muestra y aplicacin
Al compilar y vincular la aplicacin SampleDLL, el sistema operativo Windows
busca la DLL SampleDLL en las ubicaciones siguientes en este orden:
Con la introduccin de Microsoft .NET y la de.NET Framework, la mayora de
los problemas asociados con los archivos DLL se han eliminado mediante el
uso de ensamblados. Un ensamblado es una unidad lgica de funcionalidad
que se ejecuta bajo el control de .NET common language runtime
(CLR). Fsicamente, existe un ensamblado como un archivo .dll o como un
archivo .exe. Sin embargo, internamente un ensamblado es muy diferente de
una DLL de Win32 de Microsoft.
Informacin de versin
Autodescriptivos
Cuando se crea un ensamblado, toda la informacin que es necesario
para el CLR para ejecutar el ensamblado est contenido en el manifiesto
del ensamblado. El manifiesto del ensamblado contiene una lista de los
ensamblados dependientes. Por lo tanto, el CLR puede mantener un
conjunto coherente de ensamblados que se utilizan en la aplicacin. En
archivos DLL de Win32, no se puede mantener la coherencia entre un
conjunto de Archivos DLL que se utilizan en una aplicacin al utilizar
archivos DLL compartidos.
Control de versiones
En un manifiesto de ensamblado se registra la informacin de versin y
aplicado por el CLR. Adems, las directivas de versin le permiten aplicar
uso especfico de la versin. En archivos DLL de Win32, no se puede
aplicar control de versiones mediante la sistema operativo. En su lugar,
debe asegurarse de que los archivos DLL son con versiones anteriores
es compatible.
Implementacin de Side-by-side
Ensamblados admiten la implementacin de side-by-side. Una aplicacin
Puede utilizar una versin de un ensamblado, y otra aplicacin puede
utilizar una diferente versin de un ensamblado. A partir de Windows
2000, la implementacin de side-by-side es compatible con la
localizacin de archivos DLL en la carpeta de la aplicacin. Adems,
Windows Proteccin de archivos impide las DLL del sistema sobrescrito
o reemplazado por un agente no autorizado.
Aislamiento y autocontencin
Puede ser una aplicacin que se desarrolla utilizando un ensamblado
independientes y aisladas de otras aplicaciones que se ejecutan en el
equipo. Esta caracterstica le ayuda a crear las instalaciones de impacto
cero.
Ejecucin
Un ensamblado se ejecuta bajo los permisos de seguridad que se
proporcionado en el ensamblado de manifiesto y que estn controlados
por el CLR.
hay manera natural de datos, de grupo con sus funciones asociadas dentro de
la programacin estructurada. La programacin estructurada se llama a
menudo la programacin de procedimiento debido a su enfoque en los
procedimientos (en lugar de en "objetos").
Segundo lugar los programadores frecuentemente se encuentran con la
necesidad de volver a utilizar las funciones. Pero las funciones que trabajaron
con un tipo de dato a menudo no poda ser utilizadas con otros datos, lo que
limita los beneficios obtenidos.
Programacin Orientada a Objetos (OOP)
Programacin orientada a objetos responde a estos requisitos de
programacin, proporcionando tcnicas para la gestin de enorme complejidad,
lograr la reutilizacin de componentes de software y datos de acoplamiento con
las tareas que manipulan esos datos.
La esencia de la programacin orientada a objetos es modelar "objetos" (es
decir, cosas o conceptos) en lugar de "datos". Los objetos modelo podra estar
en widgets de la pantalla, como botones y cuadros de lista, o que podra ser
real los objetos del mundo, tales como clientes, bicicletas, aviones, gatos y
agua.
Los objetos tienen caractersticas, tambin llamadas propiedades o atributos,
como la edad, rpido, amplio, negro, o mojado. Tambin tienen la capacidad,
tambin llamadas operaciones o funciones, como la compra, acelerar, vuelan,
ronroneo, o burbuja. Este es el trabajo de la programacin orientada a objetos
para representar estos objetos en el lenguaje de programacin.
Programacin orientada a objetos
C++ esta orientada a programacin con direccion u orientacin a objetos
Los tres pilares del desarrollo son
Encapsulacin
Herencia
Polimorfismo
Encapsulacin
La propiedad de ser una unidad independiente se llama encapsulacin. Con la
encapsulacin, usted puede lograr la ocultacin de datos. Ocultacin de datos
es la caracterstica de gran valor que un objeto puede ser utilizado sin que el
usuario sepa o se preocupe de cmo funciona internamente. Del mismo modo
que se puede utilizar un refrigerador sin saber cmo funciona el compresor, se
puede utilizar un objeto bien diseado sin necesidad de conocer su
funcionamiento interno. Se pueden hacer cambios a esos funcionamientos sin
afectar la operacin del programa, siempre y cuando se cumplan las
especificaciones; al igual que el compresor en un refrigerador puede ser
sustituido por otro de diseo similar.
Entorno de Desarrollo
Este libro hace la suposicin de que el compilador tiene un modo en el que se
puede escribir directamente a una " consola " ( por ejemplo , una ventana MS
DOS / Comando o una ventana de shell ) , sin la preocupacin de un entorno
grfico, tales como los de windows o en Macintosh. Busque una opcin como
consola o fcil ventana o consulte la documentacin del compilador.
Este libro hace la suposicin de que el compilador tiene un modo en el que se
puede escribir directamente a una " consola " ( por ejemplo , una ventana MS
DOS / Comando o una ventana de shell ) , sin la preocupacin de un entorno
grfico, tales como los de windows o en Macintosh. Busque una opcin como
consola o fcil ventana o consulte la documentacin del compilador.
Su compilador podra ser parte de un entorno de desarrollo integrado ( IDE ) o
podra tener su propio editor de texto de cdigo fuente incorporada, o puede
que est utilizando un editor de texto comerciales o procesador de texto que
pueda producir archivos de texto . Lo importante es que todo lo que usted
escribe su programa , debe guardar los archivos simples de texto sin formato ,
sin comandos de procesamiento de textos incrustados en el texto. Los
ejemplos de editores de seguros incluyen el Notepad de Windows , el comando
DOS Edit, Breve , Epsilon , Emacs y vi . Muchos procesadores comerciales de
palabras , como WordPerfect , Word , y docenas de otros, tambin ofrecen un
mtodo para guardar archivos de texto simple .
Los archivos que usted crea con su editor se denominan archivos de origen, y
para C ++ por lo general se denominan con la extensin .cpp , .cp o .c . En este
libro los nombres de todos los archivos de cdigo fuente con la extensin .cpp ,
pero comprueba tu compilador para lo que necesita .
La mayora de los compiladores de C ++ no les importa lo que la extensin le
da a su cdigo fuente, pero si no se especifica lo contrario, el uso de muchos
.cpp por defecto. Tenga cuidado, sin embargo; algunos compiladores tratan a
los archivos .c como cdigo C y archivos .cpp como cdigo C ++.
Una vez ms, por favor revise la documentacin del compilador. En cualquier
caso, es ms fcil para que otros programadores que necesitan para entender
sus programas si utiliza constantemente .cpp para archivos de cdigo fuente de
C ++.
HACER
NO utilizar un simple editor de texto para crear su cdigo fuente, o usar el
editor incorporado que viene con su compilador.
NO guardar sus archivos con el .c, .cp, o la extensin .cpp. Se recomienda la
extensin .cpp.
S, verifique la documentacin para obtener detalles acerca de su compilador y
enlazador para asegurarse de que sabe cmo compilar y vincular sus
programas.
NO Hacer
NO use un procesador de textos que permita ahorrar caracteres de formato
especiales. Si usted hace uso de un procesador de texto, guarde el archivo
como texto ASCII.
NO use una extensin .c si su compilador trata archivos tales como el cdigo C
en lugar de cdigo C ++.
Proceso Para Crear un programa
El primer paso en la creacin de un nuevo programa es escribir los comandos
apropiados (declaraciones) en un archivo de origen. Aunque el cdigo fuente
de su archivo es un tanto crptica, y cualquier persona a quien no conoce C ++
tendr dificultades para entender para lo que es, todava est en lo que
llamamos forma legible. Su archivo de cdigo fuente no es un programa y que
no se puede ejecutar, o correr, como un dato ejecutable o archivo de programa.
Creacin de un archivo de objetos con el compilador
Para activar su cdigo fuente en un programa, se utiliza un compilador. Cmo
se invoca el compilador y cmo lo dices dnde encontrar el cdigo fuente vara
de compilador compilador; comprobar su documentacin.
Despus de compilar el cdigo fuente, se produce un fichero objeto. Este
archivo se nombra a menudo con la extensin .obj o .o. Esto todava no es un
programa ejecutable, sin embargo. Para convertir esto en un programa
ejecutable, debe ejecutar el enlazador.
Cracion de archivo ejecutable con un enlazador
Programas en C ++ son tpicamente creados mediante la vinculacin de uno o ms
ficheros objeto (.obj o archivos .o) con una o ms bibliotecas. Una biblioteca es una
coleccin de archivos enlazables que se suministran con el compilador, que ha adquirido
por separado, o que ha creado y compilado. Todos los compiladores de C ++ vienen con
una biblioteca de funciones tiles y clases que se pueden incluir en su programa. Vas a
aprender ms acerca de las funciones y clases con gran detalle en los prximos das.
Los pasos para crear un archivo ejecutable son
1. Cree un archivo de cdigo fuente con una extensin .cpp.
2. Compilar el cdigo fuente en un archivo objeto con la extencion .obj o .o.
3. Vincular el archivo objeto con las biblioteca necesarias para producir un programa
ejecutable.
El ciclo de desarrollo
Si cada programa funcion la primera vez que lo intent, este sera el ciclo de
desarrollo completo: Escriba el programa, compilar el cdigo fuente, vincular el
programa y ejecutarlo.
Por desgracia, casi todos los programas, no importa lo trivial, puede y va a
tener errores.
Algunos errores hacen que la compilacin falle, algunos causan el enlace falle,
y algunos aparecen slo cuando se ejecuta el programa (estos son a menudo
llamados "bugs").
Independientemente del tipo de error que encuentre, debe arreglarlo, y que
implica la edicin de su cdigo fuente, recompilar y volver a vincular, y luego
volver a ejecutar el programa. Este ciclo est representado en la figura 1.1, que
los diagramas de los pasos en el ciclo de desarrollo.
Hello.cpp El primer programa en C++
Escriba el cdigo fuente muestrado en el listado 1.1 directamente en su editor,
exactamente como se muestra (con exclusin de la numeracin de lneas). Una
vez que est seguro de que ha introducido correctamente, guarde el archivo,
compilarlo, vincularlo, y ejecutarlo. Si todo se ha hecho correctamente, imprime
las palabras Hola Mundo para su pantalla. No se preocupe demasiado acerca
de cmo funciona; esto es realmente slo para usted se sienta cmodo con el
ciclo de desarrollo. Todos los aspectos de este programa est cubierto durante
el prximo par de das.
Escriba el cdigo fuente muestra en el listado 1.1 directamente en su editor,
exactamente como se muestra (con exclusin de la numeracin de lneas). Una
vez que est seguro de que ha introducido correctamente, guarde el archivo,
compilarlo, vincularlo, y ejecutarlo. Si todo se ha hecho correctamente, imprime
las palabras Hola Mundo para su pantalla. No se preocupe demasiado acerca
de cmo funciona; esto es realmente slo para usted cmodo con el ciclo de
desarrollo. Todos los aspectos de este programa est cubierto durante el
prximo par de das. La siguiente lista contiene nmeros de lnea a la izquierda.
Estos nmeros son para referencia en el libro. No deben ser escritos en su
editor. Por ejemplo, en la lnea 1 del listado 1.1, deberas insertar:
#include <iostream>
LISTING 1.1 HELLO.cpp, the Hello World Program
1: #include <iostream>
2:
3: int main()
4: {
5:
std::cout << Hello World!\n;
6:
return 0;
7: }
Asegrese de las entradas esten exactamente como se muestra. Preste
especial atencin a la puntuacion. El << en la lnea 5 es el smbolo de
redireccin, producido en la mayora de los teclados manteniendo pulsada la
tecla Shift y pulsando la tecla de la coma dos veces. Entre las letras std y cout
en la lnea 5 son dos signos de dos puntos (:). Lneas 5 y 6 de cada extremo
con punto y coma (;)
Tambin compruebe para asegurarse de que est siguiendo las instrucciones
del compilador correctamente. La mayora de los compiladores enlazan
automticamente, pero consulte la documentacin para ver si es necesario