Praca z zewnętrznymi bibliotekami rozszerza możliwości Visual Basic, pozwalając na korzystanie nie tylko z standardowych klas, ale także z komponentów zewnętrznych — zarówno bibliotek .NET (DLL), jak i klasycznych obiektów COM.
Początkowo VB był zaprojektowany głównie do interakcji z komponentami COM (ActiveX, OCX), umożliwiając podłączanie takich bibliotek przez "Project – References". Wraz z pojawieniem się VB.NET dodano możliwość odniesienia do zestawów .NET i wygodniejsze korzystanie z zewnętrznych metod przez P/Invoke (Declare).
Główną trudnością jest konieczność poprawnego wyboru sposobu integracji, aby uniknąć błędów w czasie wykonywania, problemów z kompatybilnością i wycieków zasobów podczas interakcji z zewnętrznym kodem.
W .NET do używania bibliotek .NET lub zarejestrowanych komponentów COM używa się Add Reference, co dodaje odniesienie do zestawu; do wywoływania procedur z natywnych DLL stosuje się Declare.
Przykład użycia biblioteki .NET (Add Reference):
' Po dodaniu odniesienia .NET Imports System.IO Dim reader As New StreamReader("file.txt") Dim line As String = reader.ReadLine() reader.Close()
Przykład wywołania funkcji z WinAPI (Declare):
' Wywołanie funkcji z user32.dll (WinAPI) Declare Function MessageBeep Lib "user32" (ByVal wType As Integer) As Boolean Sub TestBeep() MessageBeep(0) End Sub
Kluczowe cechy:
Czy można używać konstrukcji Imports do ładowania funkcji z zewnętrznych DLL?
Nie, operator Imports jedynie ułatwia odniesienie do przestrzeni nazw w ramach dołączonych zestawów, ale nie może być używany do dynamicznego podłączania funkcji z natywnych DLL.
Czy należy rejestrować zestawy .NET do użycia przez Add Reference w VB.NET?
Nie, biblioteki .NET są dodawane przez proste dodanie odniesienia, a rejestracja przez regsvr32 jest wymagana tylko dla bibliotek COM.
Czy za pomocą Declare można podłączać metody .NET, a nie tylko natywne funkcje Win32?
Nie, Declare ma zastosowanie tylko do funkcji z zwykłych (nie .NET) DLL, eksportujących funkcje stdcall/FARPROC. Funkcje .NET wywołuje się przez Add Reference/Imports.
Programista postanowił użyć zewnętrznej biblioteki .NET przez Declare, nie studiując dokumentacji, otrzymał błąd etapu kompilacji.
Zalety:
Wady:
Poprawne dodanie odniesienia .NET przez Add Reference, następnie użycie Imports i tworzenie instancji wymaganych klas.
Zalety:
Wady: