Crear dll con DevC++

Páginas: 5 (1211 palabras) Publicado: 5 de marzo de 2014
Crear dll con DevC++
julio 18, 2011 por darkchicles
Hola, no se ustedes… pero yo siempre me pregunte como rayos se crean esas cosas llamadas dll ( dynamic-link library | biblioteca de enlace dinámico ) y mas cuando en tiempos aquellos de Windows 98 llegaba a faltar alguna para ejecutar un programa.
Bien, empecemos definiendo que es en si un archivo dll. A groso modo un archivo dll vienesiendo un archivo donde se encuentran almacenadas funciones que pueden llegar a ser llamadas por uno o varios programas.
Por ejemplo (recalco que es un ejemplo ficticio) :
El archivo msnmsgr.exe hace uso de sus bibliotecas [msgsres.dll, rtmpltfm.dll, psmsong.dll] exclusivas  para su funcionamiento, al igual que iexplorer.exehace uso exclusivo de las suyas [jsdbgui.dll, , IEShims.dll,jsdebuggeride.dll] , pero los dos programas comparten la librería iexproxy.dll.
 

Los archivos dll además de ser compartidos por distintas aplicaciones, tienen la característica de que  pueden ser llamados en runtime (en ejecución).
Que ventajas nos trae que los programas compartan bibliotecas (*.dll) , la ventaja principal es el reducir el tamaño del programa ejecutable ( *.exe), pero al igual que existenventajas, existen desventajas; la mas común y  odiada por todos es que un programa que desinstalamos desinstale una dll que era necesaria para otro programa.
Después de esta introducción, hablemos sobre el por que crear dll para nuestros programas. Siempre será mucho mas sencillo gestionar nuestra aplicación por módulos, donde se encuentren distintas funciones y sean fácilmente localizables, muyal estilo de las bibliotecas estáticas (*.h) a diferencia de las bibliotecas estáticas que se encuentran embebidas en el archivo exe, las bibliotecas de enlace dinámico (*.dll)  se encuentran, como archivos independiente reduciendo considerablemente el tamaño de nuestro archivo ejecutable, facilitando la actualización del mismo o bien de alguno de sus componentes.
Basta de hacerla de emoción,empecemos a escribir código.
1.- Abrimos DevC++ (mi versión es 4.9.9.2), Archivo –> Nuevo –> Proyecto

Elegimos “DLL”, de nombre colocamos “dll” y en tipo colocamos “En C”
 
Guardamos nuestro proyecto como dll.dev

2.- Se abran creado 2 archivos automáticamente [ dllmain.c y dll.h ]
dll.h 
#ifndef _DLL_H_
#define _DLL_H_

#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else/* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */


DLLIMPORT void HelloWorld (void);


#endif /* _DLL_H_ */
dllMain.c
/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include
#include
#include

DLLIMPORT void HelloWorld ()
{
MessageBox (0, "Hello World from DLL!\n", "Hi", MB_ICONINFORMATION);
}


BOOLAPIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ ,
DWORD reason /* Reason this function is being called. */ ,
LPVOID reserved /* Not used. */ )
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;

case DLL_PROCESS_DETACH:
break;

case DLL_THREAD_ATTACH:
break;case DLL_THREAD_DETACH:
break;
}

/* Returns TRUE on success, FALSE on failure */
return TRUE;
}
3.-En realidad con eso tenemos creado nuestra DLL, no hace falta mas que compilar el archivo.

Una vez compilado el archivo veremos que se crea una dll en el directorio donde tengamos guardado el proyecto.

Antes de continuar, expliquemos algunas líneas de código.Esencialmente en el archivo dll.h se declaran las funciones que serán exportables por el archivo dll, para ello tenemos las líneas siguientes:
1: #ifndef _DLL_H_
2: #define _DLL_H_
3: 
4: #if BUILDING_DLL
5: # define DLLIMPORT __declspec (dllexport) //Export de la DLL
6: #else
7: # define DLLIMPORT __declspec (dllimport) //Import de la DLL
8: #endif
9:...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Devc++
  • Devc++
  • Dll sqlserver
  • Dll´s
  • Archivo .Dll
  • El entorno devc++
  • caca devca
  • devc++

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS