Escrito por Mauro Rondinelli el Martes 08 de Mayo de 2001 a las 00:00hs
Hoy explicare como crear DLL (Dinamic Link Library) bajo Visual Basic, primero y principal explicare para que nos puede llegar a servir el uso de una DLL, como caracteristica principal nos permite agrupar el codigo de nuestro programa en modulos separados, cada uno con una funcion especial.
Por ejemplo un programa para visualizar graficos puede llegar a tener una DLL para trabajar con cada archivo grafico en particular, por ejemplo formato_gif.dll puede llegar a tener todas las funciones para trabajar con este tipo de archivos (GIF), formato_jpg.dll para trabajar con imagenes JPG y etc.
Esto hace que la programacion sea mas sencilla y menos trabajosa a la hora de solucionar problemas o crear nuevos programas dado que una DLL puede ser utilizada por varios programas a la ves.
Bueno mucha teoria, vamos a la practica y al codigo, este articulo consta de dos partes generales una es la creacion de la DLL y la otra la creacion de un programa que utilice esta DLL.
Creacion de la DLL
Abrimos Visual Basic y seleccionamos el tipo de proyecto que vamos a crear, en este caso DLL ActiveX

Al elegir esta opcion nos aparecera la ventana de codigo con el archivo creado por defecto llamado Class1, este archivo es un modulo de clase que contendra las funciones de nuestra DLL.
La funcion de nuestra DLL sera la de crear una caja de mensaje (MsgBox) personalizada. Para esto tenemos que agregar a nuestra DLL un formulario (Menu Proyecto > Agregar Formulario). En este agregamos un control Label, un Image y un CommandButton, al control Image le ponemos alguna imagen y la distribucion de los controles la hacemos mas o menos asi...

Ahora le modificamos algunas propiedades, al formulario (Form1)
BorderStyle = 3 Fixed Dialog
StartUpPosition = 2 CenterScreen
A el control Command1 le ponemos
Caption = Aceptar
Ahora dentro del codigo del formulario ponemos
Private Sub Command1_Click()
Unload Me
End Sub
Lo que hace este codigo es descargar el formulario cuando se hace click en el boton Command1, ahora cerramos el formulario, abrimos Class1 y dentro de este agregamos el siguiente codigo...
'Creamos un Sub con dos parametros del tipo string (cadena de texto)
Public Sub MostrarMensaje(Titulo As String, Mensaje As String)
'definimos una variable con la cual haremos referencia al formulario
Dim Formulario As Form
'le decimos a VB que Formulario sera igual al Form1
Set Formulario = New Form1
'establecemos la variables
'en el caption del formulario ponemos el titulo pasado como parametro
Formulario.Caption = Titulo
'en el label del control label1 ponemos el mensaje
Formulario.Label1.Caption = Mensaje
'mostramos el formulario de forma modal
Formulario.Show vbModal
End Sub
Una ves hecho esto modificamos la propiedad Instacing de Class1 a 6 GlobalMultiUse, lo que hace esta propiedad es no tener que definir previamente una variable para tener que usar esta Clase.
Lo que haremos ahora es guardar y compilar nuestra DLL (Menu Archivo > Generar ...). Una ves hecho esto ya tenemos la DLL lista para ser utilizada.
Creacion del Programa que use nuestra DLL
Ahora crearemos un programa que haga uso de nuestra DLL para ello hacemos click en Archivo > Nuevo Proyecto y elejimos EXE Standar, una ves hecho esto vamos al menu Proyecto > Referencias y elegimos nuestro proyecto creado anteriormente en este caso Proyecto1.

Importante!!! Debemos asegurarnos que el programa que usa la DLL que creamos no se llame tambien Projecto1 por que sino al agregar la DLL se producira un conflicto de nombres lo que originara un error.
Al hacer esto estamos vinculando nuestro programa con la DLL creada y podemos utilizar todas sus funciones, en este caso utilizaremos la unica funcion que tiene llamada MostrarMensaje para ello en el form1 agregaremos un CommandButton y dentro del codigo pondremos lo siguiente
Private Sub Command1_Click()
mostrarmensaje "titulo", "mensaje"
End Sub
Bueno, ahora corremos nuestro proyecto, hacemos click en el boton y si todo salio bien veremos el cuadro de mensaje creado por nosotros.
La verdad es que probe este ejemplo para crear la DLL y no me funciono. El problema es que no encuentra el punto de entrada a la DLL.
Yo tengo la versión de Visual basic en español y me he dado cuenta que algunas cosas no funcionan.
Gracias de todas formas. Si encuentran una solución, favor de avisarme al Mail.
maoa17@gmail.com.
muy buena la ayuda que brinda la pagina www.elguruprogramador.com.ar se entiene bastante las explicaciones y los elemplos... un abrazo.
A mi tampoco me funciono. El problema es que no encuentra el punto de entrada a la DLL.
Yo tengo también la versión de Visual basic en español, será ese el problema?
tienen q registrar la dll primero con el regsvr32
saludos
como registro el dll en regsvr32?
ya que a mi tampoco me resulto
Ami si me funciono claramente dice que en menu
Proyecto > Referencias
y que nuestro proye4cto no se llame Igual que la DLL jejej que chingon no? (Que fresa no?)
A mi me funciono bien, algunos problemas al principio, sobre todo con los nombres de los formularios y proyectos, que siempre usa genericamente form1 y proyecto1 y se pisan.
En cuanto a registrar la dll, en mi caso no fue necesario, creo que por que la genere en el mismo directorio en donde hice el proyecto principal. Sino hay que registrarla con regsvr32 (se usa: regsvr32 proyecto1.dll, mejor hacerlo todo en el directorio system32 del windows)
Muy bueno el ejemplo y espero haber ayudado a algun otro
Salu2
Excelente, muchas gracias, me ayudo a entender como crear dll con entrada y salida de datos. Mi duda ahora es como se puede crear un programa que me reconozca los dll que yo vaya creando de manera independiente de visual basic, es decir, un programa ya compilado.
Si hay algún programador que me pueda a aclara esta duda se los agradeceré muchisimo.
Saludos...
En el proyecto que yo hice no reconocía el nombre de la función en la DLL. El problema era que no había hecho esto: "modificamos la propiedad Instacing de Class1 a 6 GlobalMultiUse".
No me funciona la prueba y no se porque. Cuando intento correr la apliacion que cree
utilizando la DLL como se explica en el ejemplo, me dice:
Compile Error: Sub or Function not defined.
Esto evidentemente es porque no encuentra el procedimiento, pero la clase esta como GlobalMultiuse y la referencia al a la DLL creada tambien.
Que lindo me salio a la primera y sin errores... muchas gracias ya entendi la idea de DLL
bien echo man me salio la primera vez que lo hice funcionar, buena explicacion. Yo tambien lo tengo en español
Lo corrí, y funcionó de una. Perfecta la explicación.
MUY BUENO, NO ME FUNCIONO LA 1° VEZ PERO USANDO LOS COMENTARIOS QUE AGREGARON LO PUDE CREAR, MUCHAS GRACIAS!!!!!!!
Muy bueno. Saludos
este tutorial me sirvio de mucho y tambien a ti estoy seguro que te servirà si no le entiendes imprimelo y en un rato libre leelo con calma para que le entiendas mejor
bueno adios bye
Hola,muy bueno eso decrear DLL, quisiera saber si alguien sabe como hacer para llamar a la DLL , osea yo quiero que desde el ejecutable busque el lugar especifico de la dll y use sus funciones...
Gracias.- si te interesa visual visita www.todovisual.ya.st
Hice la prueba y funcionó de primera. Creo que es bueno recordar que cuando se genera el Paquete de la Aplicación, es necesario que figure el componente de la DLL, ya que esta no forma parte del ejecutable.
Que diferencia hay entre la DLLActiveX y ControlActiveX?
Exelente explicación!
el tutorial está de pelos... sirve al 100%... se agradece
Muchas gracias Mauro, me ha ayudado bastgante este ejemplo para la creacion de una DLL, con el ejemplo que nos ayudas a crear me ha quedado muy claro y me quedo bien a la primera. MUCHAS GRACIAS!!!!
Muy bueno el tutorial, se entiende la idea de una DLL.Muchas Gracias
hola
probe el siguiente código, pero me manda cuando genero el dll, exactamente en:
set formulario = new Form1
en Form1 me lo sombrea y me manda el siguiente error de compilacion:
NO se ha definido el tipo definido por el usuario, allí que esta pasando???
Ya probe todos los comentario y nada me sigue mandando el mismo error allí.
Hasta pronto.
Si alguien sabe, espero pronta contestación.
Gracias
Sta buena la xplicacion, me salio error a la primera, pero cambiando el nombre del proyecto1 me funciono bien, a ver si colocan mas ejemplos... :)
Rr
probe el ejemplo y funciono.....buenisima explicacion....
una consulta se pueden crear controles o componentes para vb 6.0
Excelente mini guia para entender el funcionamiento basico de una dll me funciona a la primera cero errores ya que en la guia explicas los posibles errores que puden surgir de mi parte muchas gracias y te pido otra de estas guias.
Gracias! Había probado con otra DLL/clase/form mucho más complejo y no me funcionaba. Siguiendo estos pasos va perfecto. Ahora podré mirar en mi DLL qué es lo que no iba bien.
gracias!!! :D
lo importante es hallar la dll publica, y la ingresas al GLobalSErf del Conjunto de dll oles..lugo te vas al regedit...buscas el valor Regidll y cambias el valor 4 por el de 0..asi no tendras más problemas con las dll. :) la unica razonn de trabajar con dll es el ahorro y limpieza de codigo en nuestros progrmas. Ah otra cosita..trabajen en ingles..el español jode mucho al programar! no estan dificil es cuestion de acostumbrase..recuerden q chicos de 3 años jeugan vvideojuegos de en ingles sin saber nada de ese idioma...veanlo así ...los programas de programaion en español son problematicos :)
Muy buen ejemplo, Me funcionó a la Primera y creo que a todos nos has resuelto muchas dudas sobre el uso de dll.
Muy buen ejemplo, facil de entender, me funciono correctamente.
Gracias.