dependencies in .so files

Martyn Plummer plummer@iarc.fr
Thu, 28 May 1998 07:41:06 -0000 ()


This modified version of b.c in Guido's example works for me (R-0.61.3,
RedHat Linux 5.0) without modifying the R source.  R keeps an internal
table of symbols which is accessible via the R_FindSymbol function
(defined in src/unix/dynload.c), so you can use this to return a
pointer to a function in a previously loaded library.

Pardon my C if I've done something stupid here.
Martyn.

--------------------------b.c--------------------------------
#include <stdio.h>

typedef int (*DL_FUNC) ();

DL_FUNC R_FindSymbol(char *);

void b(int *i) {
    char afun[] = "a";
    DL_FUNC fun;

    printf("in b.so; calling function a in a.so; i=%d\n",*i);
    fun = R_FindSymbol(afun);
    fun(i);
    printf("in b.so; now i=%d\n",*i);
}
---------------------------------------------------------------
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._