Como crear un DLL en Visual Studio

by ryudice on May 14, 2007

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)

paso1.jpg

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”.

paso2.jpg

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.

paso3.jpg

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.´

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Twitter

Related posts:

  1. Como crear un web service en Visual Studio y C#
  2. Video: Ahorrando tiempo en Visual Studio 2005 con Snippets
  3. Resharper: Add-in para Visual Studio.NET
  4. Release Candidate de Visual Studio 2010
  5. Como crear una URL canonica en ISS 7

{ 3 trackbacks }

Como crear e implementar una DLL con Visual Studio y C# | My Blog
February 23, 2011 at 6:43 am
Como crear e implementar una DLL con Visual Studio y C# | My Blog
February 23, 2011 at 6:43 am
Como crear e implementar una DLL con Visual Studio y C# | My Blog
February 23, 2011 at 6:43 am

{ 14 comments… read them below or add one }

Roberto July 1, 2008 at 11:02 pm

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

Hender Molina September 17, 2008 at 9:35 pm

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

Hender Molina September 21, 2008 at 9:09 am

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?

Dan December 10, 2008 at 5:30 pm

me parece muy bien como crear dll en visual net, espero que publique dll mas avansados.

Miguel Barrera April 22, 2009 at 3:32 pm

Hender… debes de indicarle a la funcion que parametro es el que va a retornar.
Saludos

jodio69 July 1, 2009 at 11:42 am

y seria posible llamr a una DLL de este tipo desde un programa echo con C++

y si es asi . Podrias expolicarme como?
gracias

Ozkar May 12, 2010 at 3:11 am

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ú

Néstor August 9, 2010 at 5:01 pm

Muchas gracias
Ya había creado muchas librerías en DLL pero no las conseguía hacer funcionar.

Buen post

albert February 3, 2011 at 1:33 pm

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

aspUser May 18, 2011 at 9:36 pm

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 ^^

yony June 21, 2011 at 7:11 am

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

CESAR August 16, 2011 at 10:28 pm

MUCHAS GRACIAS!!!
MUY BUENO TU APORTE !!!!

allan August 27, 2011 at 6:27 pm

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.

ELLE September 6, 2011 at 2:51 pm

ESTO ES MALA INFORAMCION SI QUIEREN Q YO LES ENSEÑE ME ENVIAN UN KMENSAJE A MI CORREO OK ^^

Leave a Comment

Get Adobe Flash playerPlugin by wpburn.com wordpress themes

PensandoEnCodigo is Digg proof thanks to caching by WP Super Cache