lunes, 22 de agosto de 2011

Crear DLL en C++ y usarlo en VB en Visual Studio 2005


Hace unos dias una amiga me pidio, hacerle una interfaz grafica a unos programas que hizo en c++, yo tenia una dll que hice hace tiempo para llamar a un programa de c++ usando el basic. Pero me di con la sorpresa que mi dll que hize hace tiempo ya no la reconocia el visual .net, porque no tenia puntos de entrada, pues entonces tuve que crear otra, pero me demore un poco haciendola, asi que para los tienen esta duda aqui esta lo que hice.

Primero, crearemos la dll en Visual C++.

Crearemos una funcion llamada suma que reciba dos numeros y que nos devuelva la suma de los dos numeros, es una funcion basica pero servira para crear funciones mas complicadas. Para crear la dll haremos lo siguiente:

1. Creamos un Nuevo Proyecto en Visual C++, en plantillas escogemos la opcion Aplicacion de consola Win32, en Nombre colocamos el nombre del proyecto (en mi caso escribi archivodll), ademas escogemos la Ubicacion y hacemo click en Aceptar.


2. Nos aparecera la ventana del Asistente para aplicaciones Win32, y hacemos click en Siguiente.


3. Nos aparecera la ventana de configuracion de la aplicacion y escogemos lo siguiente: En tipo de aplicacion escogemos Biblioteca de vinvulos dinamicos y en Opciones adicionales escogemos Proyecto vacio, y haces click en Finalizar.


4. Ahora, en el Explorador de soluciones, Creamos un archivo .cpp


5. En mi caso lo llame archivodll y hacemos click en Agregar.


6. Ahora copiamos el siguiente codigo:

#define _WIN32_WINNT 0x0501
#include
< windows.h >
#include < stdio.h >
#include
< math.h >
#define EOF (-1)
#ifdef __cplusplus
extern "C" {
#endif
__declspec(dllexport) int suma(int a, int b)
{
int s=0;
s=a+b;

return s;
}
#ifdef __cplusplus
}
#endif


7. Y Generamos la solucion, pero generamos como Release no como Debug, no ejecutamos.


8. Ahora buscamos en las carpeta Release del proyecto creado la dll creada, en mi caso es archivodll.dll y ya tenemos nuestra dll creada.



Segundo, crearemos el programa en Visual Basic

Para crear este proyecto haremos lo siguiente:

1. Creamos un Nuevo Proyecto en Visual Basic, en plantillas escogemos la opcion Aplicacion de Windows Forms, en Nombre colocamos el nombre del proyecto (en mi caso escribi pruebadll), ademas escogemos la Ubicacion y hacemo click en Aceptar.


2. Aparece un formulario, en nuestro formulario agregamos un boton.


3. Despues de Agregar nuestro boton, hacemos doble click sobre el boton y no aparece lo siguiente.


4. Ahora modificamos el codigo de la siguiente manera:

Public Class Form1
Declare Auto Function suma Lib "archivodll.dll" (ByVal a As Integer, ByVal b As Integer) As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim a As Integer

Dim b As Integer

Dim s As Integer

a = 3
b = 5

s = suma(a, b)
MsgBox("Suma " & a & " y " & b & " es " & s)

End Sub

End Class


5. Si Ejecutamos y hacemos click en en el boton y nos sale un error, entonces agregamos la dll en la carpeta bin\Debug , es decir donde se encuentra nuestro ejecutable.

6. Despues de esto si ejecutamos de nuevo, no nos debe salir ningun error.



7. Les recomiendo que lean el siguiente link para saber como podemos agregar complejidad en la dll.

Exporting from a DLL

...

sábado, 20 de agosto de 2011

Evitando Pensar

Estos ultimos dias me sucedieron algunas cosas, y en vista de ello decide evitar pensar en ello, a las personas que les ocurrio esto (que por ahora no dire) me entenderan.
Me gusta programar, yo diria que me encanta programar, en diferentes lenguajes, aunque mi favorito es c++, aunque smalltalk esta llamando cada vez mi atencion.
El hecho es que decidi escribir y dedicarme hacer otras cosas en ves de pensar en ese problema, que la verdad me tiene muy triste, ok... continuar.