dlsym(3X) dlsym(3X)
NAME
dlsym - Symboladresse in gemeinsam nutzbarem Objekt berechnen
SYNTAX
cc [flag ...] file ... -ldl [library ...]
#include <dlfcn.h>
void *dlsym(void *handle, char *name);
BESCHREIBUNG
dlsym() erlaubt einem Prozeß, die Adresse eines Symbols zu berechnen,
das in einem gemeinsam nutzbaren Objekt definiert ist. Das Objekt muß
zuvor durch dlopen() geöffnet worden sein. handle ist der Wert, den
der Aufruf von dlopen() als Ergebnis lieferte; das entsprechende
gemeinsam nutzbare Objekt darf seither nicht durch dlclose() geschlos-
sen worden sein. name ist der Name des Symbols als Zeichenkette.
dlsym() sucht nach dem angegebenen Symbol in allen gemeinsam nutzbaren
Objekten, die durch das Laden des durch handle bezeichneten Objekts
automatisch geladen wurden [siehe dlopen(3X)].
BEISPIELE
Das folgende Beispiel zeigt, wie dlopen() und dlsym() dazu verwendet
werden können, auf Funktionen oder auf Datenobjekte zuzugreifen. Der
Einfachheit halber wurde die Fehlerbehandlung weggelassen.
void *handle;
int i, *iptr;
int (*fptr)(int);
/* Öffnen des benötigten Objekts */
handle = dlopen("/usr/mydir/libx.so", RTLDLAZY);
/* Suchen der Adresse einer Funktion und eines
Datenobjekts */
fptr = (int (*)(int))dlsym(handle, "somefunction");
iptr = (int *)dlsym(handle, "intobject");
/* Aufruf der Funktion mit Übergabe des Datenobjekts als
Parameter */
i = (*fptr)(*iptr);
ERGEBNIS
Wenn handle kein gültiges Objekt bezeichnet, das durch dlopen() geöff-
net wurde, oder wenn das angegebene Symbol in den mit handle im Zusam-
menhang stehenden Objekten nicht gefunden werden kann, liefert dlsym()
den Wert NULL als Ergebnis. Genauere Informationen über die Fehlerur-
sache stehen über die Funktion dlerror() zur Verfügung.
SIEHE AUCH
dlclose(3X), dlerror(3X), dlopen(3X).
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98