Programacion

Solo disponible en BuenasTareas
  • Páginas : 7 (1631 palabras )
  • Descarga(s) : 4
  • Publicado : 13 de junio de 2010
Leer documento completo
Vista previa del texto
&5($&,21 < 862 '( '//V 87,/,=$1'2 '(9&
&$3,78/2 , &UHDFLyQ GH OD '// \ GH OD DSOLFDFLyQ GH WHVW El objetivo es crear una DLL utilizando Dev-C++. Para ello necesitamos tener instalado en nuestro ordenador el programa Dev-C++, programa que te puedes bajar libremente de: http://www.bloodshed.net/devcpp.html Una vez que lo tenemos instalado, vamos a crear la DLL. Lo que vamos a conseguir es unaDLL programada en C++, más una aplicación de „test“ que utiliza las funciones de la DLL. Para ello, vamos a realizar los siguientes pasos. Hay que tener en cuenta que puede que las ventanas tengan otro aspecto, dependiendo de la versión de Dev-C++ utilizada. 1. Opción del menú "File -> New Project..." 2. Tipo "DLL" y lenguaje "C++". Pulsar OK

3. Cuadro de diálogo "New DLL project"

3.1.Opciones DLL Project: este proyecto va a crear la DLL en sí - DLL Project name: MyDLL

- DLL Project filename: Pulsar el boton con los 3 ptos y seleccionar un nombre (se puede definir un nombre nuevo) - Main source filename: Dejar el que sale por defecto (MainDll) 3.2. Opciones DLL Test Project: este proyecto va a crear la aplicacion que usa la DLL - DLL Project name: MyTestDLL - DLL Projectfilename: Pulsar el boton con los 3 ptos y seleccionar un nombre (se puede definir un nombre nuevo) - Main source filename: Dejar el que sale por defecto (MainExe) 3.3 Pulsar OK. Nos sale un mensaje que dice que va a abrir el projecto DLL y que luego debemos usar la DLL con el programa de test. Le damos a OK 4. Ya tenemos la DLL. Le damos a compilar y nos genera la DLL 5. Ahora, para ver si funcionacorrectamente, cerramos el proyecto de la DLL y abrimos el proyecto que la usa, el cual hemos creado en el punto 3.2. 6. Compilamos el proyecto abierto en el punto 5. y lo ejecutamos y "tachachán!" llama a las funciones de la DLL

&$3,78/2 ,, 3HUR 4Xp HV XQD '//" 4Xp HV OR TXH JHQHUR" Vamos a mirar “dentro“ de la DLL, para ver qué es lo que tenemos y comprender cómo funciona, pero primero, unaexplicación previa: existen dos formas de integrar una DLL en nuestro programa: - A través de la información que la propia DLL contiene, sin ningún archivo externo y basándonos solo en la documentación de la DLL. Este método NO es el que usaremos (de momento) - O a través del archivo de cabecera (*.h) y la librería estática (*.lib) que la DLL genera al compilarse. Este método es el que usaremos.Vamos a abrir el proyecto de la DLL y a hacer un par de cambios en él, para aclarar su funcionamiento. Abrimos, pues, el proyecto MyDLL y vemos que tenemos 2 archivos, MainDLL.cpp y MainDLL.h. Nos fijamos primero en el archivo de cabecera. Abrimos el archivo MainDll.h y al principio, vemos lo siguiente: #if BUILDING_DLL # define DLLIMPORT __declspec (dllexport) #else /* Not BUILDING_DLL */ # defineDLLIMPORT __declspec (dllimport) #endif /* Not BUILDING_DLL */ Ufff! Parece complicado, pero no hay que desanimarse, sólo son macros! Vemos que se distingue enrtre estar FUHDQGR la DLL (BUILDING_DLL) o estar XWLOL]DQGR la DLL. Hay que darse cuenta que: - al FUHDU la DLL se define la macro DLLIMPORT como GOOH[SRUW - mientras que al XWLOL]DU la DLL, se define DLLIMPORT como GOOLPSRUW Es decir, alcrear la DLL, vamos a exportar el código/programa que hagamos a otros programas, mientras que al utilizar la DLL, lo que hacemos es importar ese programa anteriormente creado. El resto del archivo de cabecera es la implementación de una clase que realiza „algo“; en este ejemplo, la DLL solo muestra un mensaje. Un punto importante es que en las declaraciones tenemos lo siguiente: struct DLLIMPORTDllClassBase { virtual int virtual_method () const; }; Como se ve, ahí se utiliza la macro DLLIMPORT, de tal manera que cuando utilicemos la DLL, estaremos importando el código que se haya creado en la DLL a nuestro programa, mientras que cuando estemos programando la DLL en sí, estaremos exportando el código. Así, por medio de una simple macro, el mismo archivo de cabecera sirve para crear Y para...
tracking img