Lavorare con librerie esterne espande le possibilità di Visual Basic, permettendo di utilizzare non solo classi standard, ma anche componenti di terze parti — sia librerie .NET (DLL) che oggetti COM classici.
Inizialmente, VB era principalmente progettato per interagire con componenti COM (ActiveX, OCX), consentendo di collegare tali librerie tramite "Project – References". Con l'arrivo di VB.NET, è stata aggiunta la possibilità di fare riferimento ad assembly .NET e utilizzare più comodamente metodi esterni tramite P/Invoke (Declare).
La principale difficoltà è la necessità di scegliere correttamente il metodo di integrazione, per evitare errori di runtime, problemi di compatibilità e perdite di risorse quando si interagisce con codice esterno.
In .NET, per utilizzare librerie .NET o componenti COM registrati si usa Add Reference, che aggiunge un riferimento all'assembly; per chiamare procedure da DLL native si usano Declare.
Esempio di utilizzo di una libreria .NET (Add Reference):
' Dopo aver aggiunto un riferimento .NET Imports System.IO Dim reader As New StreamReader("file.txt") Dim line As String = reader.ReadLine() reader.Close()
Esempio di chiamata a una funzione da WinAPI (Declare):
' Chiamata a una funzione da user32.dll (WinAPI) Declare Function MessageBeep Lib "user32" (ByVal wType As Integer) As Boolean Sub TestBeep() MessageBeep(0) End Sub
Caratteristiche chiave:
È possibile utilizzare la costruzione Imports per caricare funzioni da DLL esterne?
No, l'operatore Imports semplifica solo l'accesso ai namespace all'interno degli assembly collegati, ma non può essere utilizzato per caricare dinamicamente funzioni da DLL native.
È necessario registrare assembly .NET per utilizzarli tramite Add Reference in VB.NET?
No, le librerie .NET si collegano semplicemente aggiungendo un riferimento, mentre solo le librerie COM richiedono registrazione tramite regsvr32.
È possibile collegare metodi .NET tramite Declare, e non solo funzioni Win32 native?
No, Declare si applica solo a funzioni da DLL normali (non .NET) che esportano funzioni stdcall/FARPROC. Le funzioni .NET vengono chiamate tramite Add Reference/Imports.
Uno sviluppatore ha deciso di utilizzare una libreria .NET di terze parti tramite Declare, senza esaminare la documentazione, e ha ottenuto un errore durante la fase di compilazione.
Vantaggi:
Svantaggi:
Aggiunta corretta di un riferimento .NET tramite Add Reference, quindi utilizzo di Imports e creazione di istanze delle classi necessarie.
Vantaggi:
Svantaggi: