dlsym(S)
dlsym --
get the address of a symbol in a dynamically linked library
Syntax
cc . . . -lc
#include <dlfcn.h>
void *dlsym(void *handle, const char *name);
Description
dlsym(S)
allows a process to obtain the address of a symbol defined
within a shared object (dynamically linked library)
previously opened by
dlopen(S).
handle is a value returned by a call to
dlopen( );
the corresponding shared object must not have been
closed using
dlclose(S).
name is the symbol's name as a character string.
dlsym( )
searches for the named symbol in all shared
objects loaded automatically as a result of loading the
object referenced by
handle.
See
dlopen(S).
Return values
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( )
returns NULL.
More detailed diagnostic information is
available through
dlerror(S).
Examples
The following example shows how
dlopen( )
and
dlsym( )
can be used
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", RTLD_LAZY);
/* find address of function and data objects */
fptr = (int (*)(int))dlsym(handle, "some_function");
iptr = (int *)dlsym(handle, "int_object");
/* invoke function, passing value of integer as a parameter */
i = (*fptr)(*iptr);
See also
dlclose(S),
dlerror(S),
dlopen(S)
Standards conformance
dlsym(S)
is not part of any currently supported standard;
it is an extension of AT&T System V provided by
The Santa Cruz Operation, Inc.
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003