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

[index]


Compilar la DLL.

Para compilar la DLL basta seleccionar en el menú Build la opcion de menu Build GIFDLL.dll, si no hay ningun error en los ficheros se compilarán sin problemas y obtendremos la DLL en el directorio GIFDLL\Release. El compilador creará tambien otros ficheros en este directorio, una librería de importacion (GIFDLL.LIB), varios ficheros .OBJ, y un fichero .PCH que contiene código intermedio usado por el compilador.


Usar la DLL en C++

Para usar la DLL en C++ es necesario que windows pueda encontrar la DLL en tiempo de ejecucion, lo mejor es copiar la DLL al directorio C:\WINDOWS\SYSTEM (o equivalente). Tambien se puede situar la DLL en el mismo directorio donde se encuentre el ejecutable.

En los ficheros CPP donde necesitamos usar las funciones de la DLL deberemos incluir el fichero de cabecera (GIFDLL.H) con las declaraciones de las funciones exportadas.

Ademas, para que el linker pueda realizar su labor, es necesario incluir en el proyecto C++ la librería de importacion. La librería que genera Visual C (GIFDLL\RELEASE\GIFDLL.LIB) solo es válida para Visual C. Si deseamos usar la DLL en Borland C++ será necesario generar una nueva librería de importacion usando IMPLIB.EXE.


Usar la DLL en Visual Basic.

Para usar la DLL en Visual Basic es aconsejable que la DLL se encuentre en el directorio C:\WINDOWS\SYSTEM (o equivalente). Tambien se puede usar la DLL si se encuentra situada en el directorio de la aplicacion en tiempo de ejecución, pero en tiempo de diseño (trabajando desde el IDE de VB) windows no encontrará la DLL, así que es mejor situarla en C:\WINDOWS\SYSTEM.

Para usar las funciones de la DLL es necesario incluir las declaraciones de las funciones en un módulo de VB. Es aconsejable consultar en la ayuda de Visual Basic el capítulo dedicado a la sentencia Declare. El fichero GIFDLL.BAS contiene la declaracion de las funciones, este fichero es una réplica del fichero de cabecera (GIFDLL.H) adaptado a la sintaxis VB.


Problemas típicos.

  • Visual Basic no encuentra la DLL ?
    • Copia la DLL al directorio C:\WINDOWS\SYSTEM (SYSTEM32 en NT), así es seguro que windows encuentra la DLL tanto en tiempo de diseño como en tiempo de ejecución. Si colocas la DLL en el directorio de la aplicacion, windows no encontrará la DLL al ejecutar el programa desde el entorno integrado de Visual Basic.

  • Visual Basic encuentra la DLL pero no encuentra la funcion ?
    • Para exportar una funcion de la DLL con éxito es necesario declarar la funcion de una forma especial. Para facilitar esta declaracion conviene usar una macro de este estilo:

      #define PUBLIC(tipo) extern "C" __declspec(dllexport) tipo WINAPI

      Y luego se declaran las funciones exportadas usando la macro PUBLIC:

      PUBLIC(void) FuncionPublica(void* param1, .....

      Tambien es necesario incluir el nombre de la funcion exportada en la sección EXPORTS del fichero .DEF

      Además es necesario asegurarse de que se ha declarado correctamente la funcion en VB, consulta en la ayuda de VB la sintaxis de la instruccion Declare. Muy importante tambien es respetar las mayusculas y minusculas en el nombre de la funcion (en la declaracion de la funcion).


© info3@maicas.net