htm=articulo/gifdll1.htm ok articulo/gifdll1.htm Crear una DLL con Visual C++.

[index]


Crear un proyecto en Visual C.

Para crear la DLL usaremos Visual C++ en una de sus últimas versiones de 32 bits (4.x o 5.0). Arrancamos en entorno integrado de Visual C++ (IDE de VC) y en el menu File seleccionamos la opcion New, aparece un cuadro de diálogo en el que debemos seleccionar Projects.

Entre los distintos tipos de proyectos que podemos crear seleccionamos Win 32 Dinamic-Link Library, no debemos confundirlo con MFC AppWizard DLL ya que no vamos a usar MFC.

En el cuadro de diálogo apareceran selecionadas tambien la opcion para crear un nuevo workspace, la plataforma win32 y el path base donde se va a crear el nuevo proyecto. A esto hemos de añadir el nombre que vamos a dar al proyecto, este nombre será el que tenga la DLL y el mismo que VC dará al nuevo directorio, workspace y proyecto que se va a crear. Así pues en la casilla Project Name escribimos GIFDLL (u otro nombre que queramos dar a la DLL).

Con todas las opciones anteriores selecionadas pulsamos el boton OK y VC creará un nuevo directorio de nombre GIFDLL con unos cuantos ficheros en su interior.

Si no aparece la ventana Workspace podemos visualizarla seleccionando en el menú View la opcion Workspace. (La ventana Workspace tiene en su parte inferior varias pestañas: ClassView, InfoView, FileView, ...).

Además modificaremos ahora alguna de las opciones del proyecto. Lo primero en el menú Bulid, submenú Set active configuration, seleccionaremos Release y OK, ya que no vamos a usar Debug. El resto de las opciones de compilacion están accesibles en el menú Proyect, opcion Settings... Sin embargo las dejaremos como están por defecto.


Añadir ficheros al proyecto.

En este proyecto vamos a distribuir el código en tres ficheros CPP, además añadirecmos un fichero de cabecera (.H ) con declaraciones públicas y un fichero DEF. El fichero DEF contiene directivas de lincado, debemos incluir en este fichero el nombre de las funciones exportadas.

En el caso de que vayamos a añadir ficheros que ya habían sido creados anteriormente usaremos Project, Add to project, Files... Si, al contrario, los ficheros son de nueva creación, usaremos la opcion del menu: Project, Add to project, New... y debemos especificar el tipo de fichero de que se trata (C++ Header, C++ Source, ...) y el nombre que le vamos a dar el fichero. En cualquier caso es conveniente que los ficheros fuente del proyecto se encuantren en el mismo directorio GIFDLL.

Siguiendo el procedimiento descrito en el párrafo anterior añadiremos tres ficheros CPP, un fichero H y otro fichero DEF. Estos ficheros se pueden conseguir en texto plano descargando los fuentes de los artículos, en el directorio GIFDLL.

  1. GLOBAL.CPP exporta varias funciones cortas que serán necesarias para reservar y liberar memoria, manejar punteros desde Visual Basic, etc... Estas funciones se incluyen para facilitar el uso de la DLL desde Visual Basic.
  2. COMPRESS.CPP exporta la funcion GCompress que sirve para comprimir datos en formato compatible gif. Este fichero incluye todo el código del compresor, además de la funcion exportada.
  3. EXPAND.CPP exporta la funcion GExpand que sirve para descomprimir datos en formato compatible gif. Este fichero incluye todo el código del descompresor, además de la funcion exportada.
  4. GIFDLL.H define extructuras de datos, declara las funciones públicas, etc... Este fichero sirve tambien para que las aplicaciones externas desarrolladas en CPP puedan usar la DLL. Todos los ficheros CPP de este proyecto incluyen una directiva #include "gifdll.h"
  5. GIFDLL.DEF declara las funciones exportadas para que el linker las haga públicas.

Una vez incluidos estos ficheros en el proyecto, podemos tener acceso a ellos desde la ventana del workspace (pestaña FileView). Tambien podemos ver desde la ventana workspace (pestaña ClassView) las clases, estructuras, funciones y variables globales del proyecto. Desde esta ventana podemos navegar facilmente por el código fuente incluso en proyectos de gran tamaño y complejidad.

[siguiente]


© info3@maicas.net