dlsym(3X) dlsym(3X)
NAME
dlsym - calculate address of a symbol in a shared object
SYNOPSIS
cc [flag ...] file ... -ldl [library ...]
#include <dlfcn.h>
void *dlsym(void *handle, char *name);
DESCRIPTION
dlsym() allows a process to obtain the address of a symbol defined
within a shared object previously opened by dlopen(). handle is a
value returned by a call to dlopen(); the corresponding shared object
must not have been closed using dlclose(). name is the symbol's name
as a character string. dlsym() will search for the named symbol in all
shared objects loaded automatically as a result of loading the object
referenced by handle [see dlopen(3X)].
EXAMPLE
The following example shows how one can use dlopen() and dlsym() to
access either function or data objects. For simplicity, error checking
has been omitted.
void *handle;
int i, *iptr;
int (*fptr)(int);
/* open the needed object */
handle = dlopen("/usr/mydir/libx.so", RTLDLAZY);
/* find address of function and data objects */
fptr = (int (*)(int))dlsym(handle, "somefunction");
iptr = (int *)dlsym(handle, "intobject");
/* invoke function, passing value of integer as a parameter */
i = (*fptr)(*iptr);
RESULT
If handle does not refer to a valid object opened by dlopen(), or if
the named symbol cannot be found within any of the objects associated
with handle, dlsym() will return NULL. More detailed diagnostic infor-
mation will be available through dlerror().
SEE ALSO
dlclose(3X), dlerror(3X), dlopen(3X).
Page 1 Reliant UNIX 5.44 Printed 11/98