Le travail avec des bibliothèques externes étend les possibilités de Visual Basic, permettant d'utiliser non seulement des classes standard, mais aussi des composants tiers – tant des bibliothèques .NET (DLL) que des objets COM classiques.
À l'origine, VB était principalement conçu pour interagir avec des composants COM (ActiveX, OCX), permettant de connecter de telles bibliothèques via "Project – References". Avec l'apparition de VB.NET, il est devenu possible de référencer des assemblies .NET et d'utiliser plus facilement des méthodes externes via P/Invoke (Declare).
La principale difficulté réside dans le choix correct du mode d'intégration pour éviter les erreurs d'exécution, les problèmes de compatibilité et les fuites de ressources lors des interactions avec du code externe.
Dans .NET, pour utiliser des bibliothèques .NET ou des composants COM enregistrés, on utilise Add Reference, ce qui ajoute une référence à l'assembly ; pour appeler des procédures à partir de DLL natives, on utilise Declare.
Exemple d'utilisation d'une bibliothèque .NET (Add Reference) :
' Après avoir ajouté la référence .NET Imports System.IO Dim reader As New StreamReader("file.txt") Dim line As String = reader.ReadLine() reader.Close()
Exemple d'appel d'une fonction de WinAPI (Declare) :
' Appel d'une fonction de user32.dll (WinAPI) Declare Function MessageBeep Lib "user32" (ByVal wType As Integer) As Boolean Sub TestBeep() MessageBeep(0) End Sub
Caractéristiques clés :
Peut-on utiliser la construction Imports pour charger des fonctions à partir de DLL externes ?
Non, l'opérateur Imports simplifie uniquement l'accès aux espaces de noms au sein des assemblies référencées, mais ne peut pas être utilisé pour le chargement dynamique de fonctions à partir de DLL natives.
Faut-il enregistrer des assemblies .NET pour les utiliser via Add Reference dans VB.NET ?
Non, les bibliothèques .NET s'ajoutent simplement par référence, et seules les bibliothèques COM nécessitent une inscription via regsvr32.
Peut-on utiliser Declare pour connecter des méthodes .NET, et pas seulement des fonctions Win32 natives ?
Non, Declare s'applique uniquement aux fonctions des DLL ordinaires (non .NET) exportant des fonctions stdcall/FARPROC. Les fonctions .NET sont appelées via Add Reference/Imports.
Un développeur a décidé d'utiliser une bibliothèque .NET tierce via Declare, sans avoir étudié la documentation, et a obtenu une erreur à l'étape de compilation.
Avantages :
Inconvénients :
Ajout correct d'une référence .NET via Add Reference, puis utilisation d'Imports et création d'instances des classes requises.
Avantages :
Inconvénients :