Hi Fons and Rene, I notice that UnixDynFindSymbol is only defined for HPUX. Any particular reason ?? Maybe one could use dlopen, ...dlsym etc Looking at the man page for dlsym: Example 1: Using dlopen() and dlsym() to access a function or data objects. The following example shows how one can use dlopen() and dlsym() to access either function or data objects. For sim- plicity, error checking has been omitted. void *handle; int *iptr, (*fptr)(int); /* open the needed object */ handle = dlopen("/usr/home/me/libfoo.so.1", RTLD_LAZY); /* find the address of function and data objects */ fptr = (int (*)(int))dlsym(handle, "my_function"); iptr = (int *)dlsym(handle, "my_object"); /* invoke function, passing value of integer as a parameter */ (*fptr)(*iptr); Example 2: Using dlsym() to verify that a particular func- tion is defined. The following code fragment shows how dlsym() can be used to verify that a particular function is defined and to call it only if it is. int (*fptr)(); if ((fptr = (int (*)())dlsym(RTLD_DEFAULT, "my_function")) != NULL) { (*fptr)(); } Eddy /______________________________________________________________________________ Func_t TUnixSystem::UnixDynFindSymbol(const char *lib, const char *entry) { // Finds and returns a function pointer to a symbol in the shared library. // Returns 0 when symbol not found. #if defined(R__HPUX) && !defined(R__GNU) shl_t handle; if (handle = (shl_t)FindDynLib(lib)) { Func_t addr = 0; if (shl_findsym(&handle, entry, TYPE_PROCEDURE, addr) == -1) ::SysError("TUnixSystem::UnixDynFindSymbol", "shl_findsym"); return addr; } return 0; #else if (lib || entry) { } // Always assume symbol not found return 0; #endif }
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:43 MET