Trabajar con bibliotecas externas amplía las capacidades de Visual Basic, permitiendo usar no solo clases estándar, sino también componentes de terceros, como bibliotecas .NET (DLL) y objetos COM clásicos.
Originalmente, VB estaba diseñado principalmente para interactuar con componentes COM (ActiveX, OCX), permitiendo conectar tales bibliotecas a través de "Project – References". Con la llegada de VB.NET, se añadió la posibilidad de referirse a ensamblajes .NET y usar métodos externos de manera más conveniente a través de P/Invoke (Declare).
La principal dificultad es la necesidad de elegir correctamente el método de integración para evitar errores en tiempo de ejecución, problemas de compatibilidad y fugas de recursos al interactuar con código externo.
En .NET, para utilizar bibliotecas .NET o componentes COM registrados se utiliza Add Reference, que agrega una referencia al ensamblaje; para llamar a procedimientos de DLL nativas se aplica Declare.
Ejemplo de uso de una biblioteca .NET (Add Reference):
' Después de agregar la referencia .NET Imports System.IO Dim reader As New StreamReader("file.txt") Dim line As String = reader.ReadLine() reader.Close()
Ejemplo de llamada a una función de WinAPI (Declare):
' Llamada a la función de user32.dll (WinAPI) Declare Function MessageBeep Lib "user32" (ByVal wType As Integer) As Boolean Sub TestBeep() MessageBeep(0) End Sub
Características clave:
¿Se puede usar la construcción Imports para cargar funciones de DLL externas?
No, el operador Imports solo facilita el acceso a espacios de nombres dentro de los ensamblajes conectados, pero no se puede utilizar para la conexión dinámica de funciones de DLL nativas.
¿Es necesario registrar ensamblajes .NET para usar a través de Add Reference en VB.NET?
No, las bibliotecas .NET se conectan simplemente agregando una referencia, y solo las bibliotecas COM requieren registro a través de regsvr32.
¿Se pueden conectar métodos .NET a través de Declare, y no solo funciones nativas de Win32?
No, Declare se aplica solo a funciones de DLL normales (no .NET) que exportan funciones stdcall/FARPROC. Las funciones .NET se llaman a través de Add Reference/Imports.
Un desarrollador decidió usar una biblioteca .NET de terceros a través de Declare, sin estudiar la documentación, y recibió un error en el momento de la compilación.
Pros:
Contras:
Agregar correctamente la referencia .NET a través de Add Reference, luego usar Imports y crear instancias de las clases requeridas.
Pros:
Contras: