Es muy simple crear una librería dll en visual C++, solo tienes que seguir estos pasos y buala se creara tu librería lista para usar en Visual Basic, Asp, etc.
Vamos a crear 5 funciones simples; suma, resta, ForGeneral, Par y DolaPeso.
Suma: esta función te devuelve el resultado de la suma de dos números, los parámetros que recibe son dos números enteros.
Resta: es igual que la función de arriba solo que te devuelve la resta de dos numaros.
ForGeneral: recibe los tres parámetros a, b y c que se necesitan para resolver la formula general, si se puede resolver entonces te regresa un 1 sino se puede resolver es 0.
Par: regresa 1 si el numero que enviaste es par de lo contrario regresa 0.
DolaPeso: recibe un valor entero que son los dólares, y te regresa la equivalencia en pesos.
Ahora comenzaremos a crear la librería:
1.- En Visual C++, creamos un Nuevo Project Workspace. En el cuadro de diálogo seleccionamos Type: MFC App Wizard (dll) y en el campo Name: ponemos Demo. Al hacer click en el botón Create... el asistente nos mostrará un nuevo cuadro de diálogo donde debemos seleccionar la opción Regular DLL with MFC statically linked y pulsar el botón Finish para terminar. Luego de unos instantes encontraremos que han sido creados varios archivos.
2.- Ubicamos el archivo principal del proyecto, llamado Demo.cpp y luego de las instrucciones dirigidas al preprocesador (que comienzan con #) incorporamos el código que corresponde a cada procedimiento:
extern "C"
int WINAPI Suma(int dato1, int dato2) /*Suma dos numeros*/
{
int temp;
temp=dato1+dato2;
return (temp);
};
int WINAPI Resta(int dato1, int dato2) /*resta el dato1 - dato2*/
{
int temp;
temp=dato1-dato2;
return (temp);
};
int WINAPI ForGeneral(int a, int b, int c)
{ /*Si se puede resulver una formula general 1 sino 0*/
int im,di,re;
im=(b*b) - (4*c*a);
di=2*a;
if(di!=0){
if(im>=0){
re=1;
}
else{
re=0;
}
}
else
re=0;
return(re);
};
int WINAPI Par(int dato) /*1 si es par 0 impar*/
{
int re;
if(dato % 2 == 0)
re=1;
else
re=0;
return (re);
};
int WINAPI DolaPeso(int dolar)
{ /*Convierte dolares a pesos*/
int peso;
peso=dolar*11;
return (peso);
};
3.- El siguiente paso es agregar cada uno de estos procedimientos a la sección export del archivo Demo.def, para que puedan ser accedidas desde programas externos. Simplemente, para cada función en la DLL, añadimos una línea conteniendo el nombre exacto de la misma. En nuestro caso el archivo quedaría como sigue:
LIBRARY "demo" DEscriptION 'demo Windows Dynamic Link Library' EXPORTS Suma Resta ForGeneral Par DolaPeso
4.- Después necesitamos proveer los prototipos de las funciones en el archivo de cabecera Demo.h. Los prototipos son exactamente iguales a las definiciones que agregamos a Demo.cpp pero sin los nombres de variables. El código que sigue lo agregamos al final del archivo Demo.h creado por el asistente:
#ifdef __cplusplus
extern "C" {
#endif
int WINAPI Suma(int, int);
int WINAPI Resta(int, int);
int WINAPI ForGeneral(int, int, int);
int WINAPI Par(int);
int WINAPI DolaPeso(int);
#ifdef __cplusplus
}
#endif
5.- Por último, salvamos todos los archivos y nos dirigimos al menú Build y seleccionamos Build Demo.dll para compilar un archivo de prueba que se creará en un subdirectorio \debug dentro del directorio principal del proyecto.
6.- Solo falta crear un proyecto en Visual Basic y le agregamos un modulo, le insertamos el script:
Public Declare function suma Lib "C:\demo\VB\demo.dll" _ Alias "Suma" (ByVal Numero1 As Integer, ByVal Numero2 As Integer) As Integer Public Declare function resta Lib "C:\demo\VB\demo.dll" _ Alias "Resta" (ByVal Numero1 As Integer, ByVal Numero2 As Integer) As Integer Public Declare function forgeneral Lib "C:\demo\VB\demo.dll" _ Alias "ForGeneral" (ByVal A As Integer, ByVal B As Integer, ByVal C As Integer) As Integer Public Declare function par Lib "C:\demo\VB\demo.dll" _ Alias "Par" (ByVal Numero As Integer) As Integer Public Declare function dolapeso Lib "C:\demo\VB\demo.dll" Alias "DolaPeso" (ByVal Dolares As Integer) As Integer
7.- y el ultimo paso es crear un formulario en el proyecto de Visual Basic y agregamos el codigo, para hacer la prueba.
Private sub Command1_Click()
n1 = Text1.Text
n2 = Text2.Text
Label1.Caption = suma(n1, n2)
end sub
Private sub Command2_Click()
n1 = Text3.Text
n2 = Text4.Text
Label2.Caption = resta(n1, n2)
end sub
Private sub Command3_Click()
A = Text5.Text
B = Text6.Text
C = Text7.Text
if forgeneral(A, B, C) = 1 Then
MsgBox ("Si tiene solucion ")
else
MsgBox ("La raiz es imaginaria o div entre 0")
end If
end sub
Private sub Command4_Click()
Numero = Text8.Text
if par(Numero) = 1 Then
MsgBox ("Es par")
else
MsgBox ("No es par")
end If
end sub
Private sub Command5_Click()
Dolares = Text9.Text
Label4.Caption = "$" & dolapeso(Dolares)
end sub