Que es un DLL?
Un DLL o Dynamic Link Library (Biblioteca de Vinculo Dinamica en español) es un archivo que contiene funciones o clases u otros recursos que pueden ser utilizados por una aplilcacion externa al DLL. Como lo dice su nombre, una aplicacion lo que hace es hacer un vinculo a la biblioteca y de esta forma puede hacer uso de funciones, procedimientos o metodos que se encuentren en esta biblioteca. Para darles un ejemplo, yo puedo tener un DLL con funciones matematicas, y en vez de escribirlas otra vez en el codigo de mi aplicacion, simplemente hago un vinculo al DLL que contiene las funciones matematicas y asi las puedo utilizar desde mi aplicacion. La ventaja de esto es que se recicla codigo, y el codigo es mas ordenado tambien, sin embargo asi tambien tiene desventajas.
Como crear un DLL
Creamos un nuevo proyecto de tipo “Libreria de clase” (mi visual studio esta en ingles pero miren la imagen de todos modos)
Despues de crear el proyecto nos va llevar al editor de codigo y automaticamente nos crea una clase con el nombre del proyecto. A partir de aqui podemos empezar a escribir las funciones. Escriban la siguiente funcion que aparece en la imagen, y cambien el nombre de la clase a “FuncionesMate”.
Aqui esta el codigo para darle copy y paste si no tienen ganas de escribir:
Public Class FuncionesMate
Public Function Sumar(ByVal a As Integer, ByVal b As Integer)
Return a + b
End Function
End Class
Despues que tengan ese codigo quiero que compilen el proyecto apretando F5 en el teclado. Lo mas probable es que les de un error pero no le hagan caso (el error dice que ese tipo de proyecto no se puede ejecutar porque es un dll, en realidad no es un error). Ahora ya tienen compilado el DLL que se deberia de encontrar en la carpeta debug/bin adentro de la carpeta del proyecto. Lo que sigue es hacer una referencia al DLL en una aplicacion de windows, esto es lo mismo que hacer un vinculo al DLL pero Visual Studio le llama referencia. Entonces creemos un nuevo proyecto de tipo “Aplicacion Windows” y en el explorador de soluciones le damos clicks derecho a nuestro proyecto y luego seleccionamos “Agregar Referencia” o “Add reference” en ingles. Vean la imagen.
Luego hacemos clicks en la pestaña que dice “examinar” o “browse” y buscamos el DLL que compilamos anteriormente y lo seleccionamos. Ahora delen doble click al formulario y agreguen esta linea de codigo antes que cualquier otra linea:
Imports ClassLibrary1.FuncionesMate
La palabra “ClassLibrary1″ puede variar, ese es el nombre que ustedes le hayan dado al proyecto, en este caso es el “Espacio de nombre” o “Namespace”. Despues de agregar esa linea en la funcion ya podes llamar las funciones que se encuentran en nuestro DLL de la siguiente forma:
Dim dll As New FuncionesMate
MessageBox.Show(dll.Sumar(3, 5))
pueden ponerle eso a un boton si quieren y les tiene que dar 8, lo que hace es nada mas sumar los numeros.´
Related posts:
{ 3 trackbacks }
{ 14 comments… read them below or add one }
Hola, estoy empezando con vs 2005 y tu nota fue de mucha ayuda, solo una pregunta.
al momento de importar la librería. ¿no se importaría nada más ClassLibrary1?, es decir:
imports ClassLibrary1
Al principio me marcaba error porque no encontraba la clase a la que hacía referencia, en este caso FuncionesMate.
Saludos
Yo en vez de usar “Imports ClassLibrary1.FuncionesMate” simplemente use el nombre que le dí a la DLL (MyFirstDLL.dll). Añadí un botón y al ejecutar la aplicación con F5 funcionó la suma de los dos valores. Este es el código de la aplicación que hice para probar la DLL:
Imports MyFirstDLL
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dll As New Funciones
Dim resultado As Integer
resultado = dll.Sumar(1, 2)
MessageBox.Show(resultado.ToString)
End Sub
End Class
Estoy probandando una DLL con dos funciones. Tengo problemas cuando llamo a una función dentro de otra.
Cuando ejecuto una función como Restar() en el siguiente ejemplo funciona bien, pero si ejecuto la función Sumar() que hace un llamado a la función Restar() recibo el error: Object reference not set to an instance of an object.
Este el código que estoy usando en la DLL:
Public Class Funciones
Public Function Sumar(ByVal a As Integer, ByVal b As Integer)
Return a + Restar(100, b)
End Function
Public Function Restar(ByVal a As Integer, ByVal b As Integer)
Return a – b
End Function
End Class
El error da al llamar Sumar(). Al llamar solamente a la función Restar() funciona bien.
Alguna idea de como evitar ese error?
me parece muy bien como crear dll en visual net, espero que publique dll mas avansados.
Hender… debes de indicarle a la funcion que parametro es el que va a retornar.
Saludos
y seria posible llamr a una DLL de este tipo desde un programa echo con C++
y si es asi . Podrias expolicarme como?
gracias
Excelente Blog, estuve buscando como crear las benditas y nada no encontre solo una correcion al momento de importar la dll solo es necesario:
“Imports ClassLibrary1″
Porque sino al momento de invocar la clase van a obtener los metodos dentro de esta.
Muy buen post
Saludos, Lima – Perú
Muchas gracias
Ya había creado muchas librerías en DLL pero no las conseguía hacer funcionar.
Buen post
Hola, ¿puede ser que me de error un programa que se conecta a una base de datos (acces 2007) xq no tiene ningún dll?(todo el código esta en los botones y ventanas correspondientes)
Ayuda. Gracias
Una duda que tengo, yo me he creado una clase ToolsWeb.cs, donde me voy agregando funciones que me hacen falta para el proyecto, para no reescribirlas y en las paginas que quiero usarlas realizo
ToolsWeb t = new ToolsWeb();
t.funcion1();
…
El tema de las referencias realizaría lo mismo, pero ya compiladas¿?
En el caso que sea si, que es mejor utilizar, dll o tener la class en el proyecto?
Un saludo, perdona mi ignorancia ^^
mi pregunta es la siguiente. tengo dos dll de un biometrico para scanear una huella digital como hago para llama la funcion que tiene esa dll
MUCHAS GRACIAS!!!
MUY BUENO TU APORTE !!!!
Cree una dll ( con librería de clases) en visual studio 2005 para un procedimiento de cambio de bits que requiero en un reporte de excel, por comodidad pensé en solo llamar el procedimiento en una macro de Excel(2007), reporte que ya tengo.
-Usé el comando regasm para registrar la dll de .NET.
-A partir de ese cambio puedo ingresarla en las referencias de la Macro y veo la estrucutra en el examinador de objetos.
-Cree un objeto que haga referencia a sin embargo no puedo acceder a la función.
Use lo siguiente (en VBA) sin embargo no me permite pasar del set del objeto:
Dim myObjecto As Timeline.TMLineClass
Set myObject = New Timeline.TMLineClass
MsgBox myObject.prueba
He bajado mis expectativas solo haciendo una función que regrese un mensaje, pero ni así logro acceder a la función, ¿Alguien podría ayudarme a encontrar mi problema?, muchas gracias.
ESTO ES MALA INFORAMCION SI QUIEREN Q YO LES ENSEÑE ME ENVIAN UN KMENSAJE A MI CORREO OK ^^