Referenz - DYLIBLOAD
Syntax: DYLIBLOAD (LibName)
Typ: Funktion
Kategorie: Bibliotheken
DYLIBLOAD versucht, eine Dynamic Link Library (dll) bzw. ein Shared Object (so) zu laden, und gibt in einem Pointer einen Handle zu dieser dll/so aus.
- 'LibName' ist ein STRING mit dem Namen der dll/so, eventuell mit Pfadangabe. Wird keine Erweiterung angegeben, geht FreeBASIC unter Win32 automatisch von ".dll" und unter Linux von ".so" aus. Eventuell wird vom Compiler nicht geprüft, ob eine Erweiterung angegeben wurde; Sie sollten keine Erweiterung angeben.
- Der Rückgabewert ist ein ANY PTR mit dem Handle zur dll/so (eine Zahl, über die die dll/so identifiziert und aufgerufen werden kann), wenn sie geladen werden konnte, oder null (0), wenn der Ladeversuch fehlschlägt.
Durch DYLIBLOAD wird eine externe dll bzw. so zur Laufzeit in den Speicher geladen. Ihre Funktionen sind ab diesem Zeitpunkt theoretisch verfügbar, müssen aber erst durch DYLIBSYMBOL definiert werden, um aufgerufen werden zu können.
Nach der Nutzung der Funktionen der DLL sollte der belegte Speicher durch DYLIBFREE freigegeben werden.
Beispiel (aus dem Verzeichnis examples/dll in Ihrem FreeBASIC-Ordner):
In diesem Beispiel wird angenommen, dass sich im FreeBASIC-Verzeichnis die Datei "mydll.dll" befindet, die die Funktion "AddNumbers" enthält.
DIM library AS ANY PTR
DIM addnumbers AS FUNCTION( BYVAL operand1 AS INTEGER, _
BYVAL operand2 AS INTEGER ) AS INTEGER
library = DYLIBLOAD( "mydll" )
IF( library = 0 ) THEN
PRINT "Cannot load the mydll dynamic library, ";
PRINT "aborting program..."
END 1
END IF
addnumbers = DYLIBSYMBOL( library, "AddNumbers" )
IF( addnumbers = 0 ) THEN
PRINT "Cannot get AddNumbers function address ";
PRINT "from mydll library, aborting program..."
END 1
END IF
RANDOMIZE TIMER
x = RND * 10
y = RND * 10
PRINT x; " +"; y; " ="; addnumbers( x, y )
DYLIBFREE library
Unterschiede zu QB: neu in FreeBASIC
Plattformbedingte Unterschiede: wird unter DOS nicht unterstützt
Unterschiede zu früheren Versionen von FreeBASIC: existiert seit FreeBASIC v0.13
Unterschiede unter den FB-Dialektformen:
In der Dialektform -lang qb steht DYLIBLOAD nicht zur Verfügung und kann nur über __DYLIBLOAD aufgerufen werden.
Siehe auch:
DYLIBFREE, DYLIBSYMBOL, Module (Library / DLL)
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|