DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

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