C++ crear dll y ejecutarla desde un exe

5:53 , , , 0 Comments

Dejamos de programar los dll desde los tiempos del Borland C pues la verdad que funcionaban muy mal, 'trancándose' el PC con frecuencia. Pero desde hace un par de semanas, que hemos bajado el Visual Studio 2013 y que andamos actualizando programas, encontramos varias rutinas que se pueden evitar volver a programar usando en vez los dll y ahora si, con mejores compiladores, ellos funcionan OK. 

Los dll son programas que no se ejecutan por si mismos. Requieren ser llamados desde un exe para que funcionen. Sirven para evitar realizar programas 'repetitivos' en los exe, ahorrando trabajo y también para actualizar programas con nuevas o corregidas rutinas y para incrementar los exe 'modularmente'. 

El compilador Visual Studio 2013 no es frecuente entre los usuarios pues vale 17.000 euros, aunque se le descarga con tres meses de prueba ampliable, plus 8 horas de descarga, ya que son 10 Gb mas otras 8 horas si se desea tener la ayuda en el disco duro. 

Mostraremos como hacer un dll y ejecutarlo desde un exe, con el compilador Dev-Cpp que puede ser descargado gratis. Mostramos imagen. 

dll


Hagamos primero el dll con la opción File del menú y luego 'NewProject' y en la ventana que aparece, configuramos : 

a) pulsar icono DLL b) Name 'Dalmau' y c) C project 

devcpp

Pulsando Ok nos sale una nueva ventana que nos pide donde guardar el 'Project' Dalmau.dev, 

visual studio c2013

Una vez guardado el Project Dalmau.dev, aparece el editor del compilador con los archivos necesarios en el editor de texto, dll.h y dllmain.c que los proporciona el editor del compilador y OJO también aparecerá una librería,libDalmau.a en la carpeta donde hemos guardado el Project que la usaremos al crear el exe. 

compilacion C

C++ crear dll y ejecutarla desde un exe (JD)

Sobre ellos podremos hacer variantes según nuestras necesidades. 

Los dejamos tal cual y vemos que este dll al ser ejecutado, su única función void HelloWorld (void) pondrá en pantalla el saludo 'Hello World from DLL' 

Procedemos ahora a compilarlo (crear dalmau.dll) en el menú : Execute/Compiler y en la carpeta que hemos guardado resultados, vemos nuestro nuevo dll archivo dalmau.dll 

dll

Ahora nos toca hacer el exe que llamará a la función HelloWorld(void) y para ello en File opción New y en la pantalla que aparece... 

devcpp

Configurar : a) Console Application b) Name Dalmau2 y c) C project 

...y guardamos nuevamente en la misma carpeta en que tenemos el dll para que el exe lo encuentre pues de otra manera, el dll deberá ser guardado en System32 

Tendremos el editor con el proyecto Dalmau2 y único archivo main.c 

visual studio c2013 

A este archivo debemos adicionar dll.h y adicionar comandoHelloWorl() 

compilacion C

OJO mucho OJO, antes de compilar (saldrá ERROR) debemos adicionar la librería creada por el dll y lo hacemos con opción Project/Project options y en la ventana que aparece, seleccionamos opción 'Parametres' y pulsando 'Add library' buscar en la carpeta que tenemos guardados nuestros archivos del dll y hacer doble clic en la única librería existente, libDalmau.a 

C++ crear dll y ejecutarla desde un exe (JD)

Ahora si compilar : Execute/Compile 

dll

Ejecutar el programa exe con : Execute/Run 

devcpp

En el resultado de 'run' aparece la pantalla Consola, también llamada del DOS o Terminal, debido a que el programa Dalmau.exe lo hemos compilado bajo DOS y la respuesta del dll es en pantalla gráfica pues el Dalmau.dll lo hemos compilado como programa gráfico (Windows). 

Podemos poner varias funciones tipo HelloWorl() en el dll según nuestras necesidades, por ejemplo, suma(x,y) y definirlas en el archivo de cabecera 'h' en nuestro caso dll.h y luego llamarlas desde el exe, al igual que hemos hecho con HelloWorl() 

De esta forma, cada vez que hagamos un nuevo programa, en que por ejemplo tengamos el 'About', en vez de programarlo en el exe, lo programamos en el dll de tal manera que si cambian las condiciones del about, lo arreglamos en el dll y todos nuestros programas tomarán el nuevo valor dado y para ello guardar el dll en Sistem32 y/o copiar el nuevo dll en cada una de las carpetas que deseamos lo ejecute cada uno de los exe que tengamos 

Si el programa exe lo tiene un cliente, el nuevo cambio será entregando el nuevo dll que irá a la carpeta del programa. 

Suerte !!! 

Soy un chico que le encanta el mundo de los videojuegos e intento explorarlo al maximo Google

0 comentarios: