[R] R-functions in C-Code

Olaf Schenk olaf.schenk at unibas.ch
Mon Oct 31 10:26:19 CET 2005


Dear R users,

I would like to use several R functions from a C-code and I have read the "Introduction to the .C Interface to R". Unfortunately, my shared library with the C-code works only in cases where I use R-routines that are defined Rmath.h, eg.

*************************************
less test.c:
#include <R.h>
#include <Rinternals.h>
#include <Rmath.h>
void test(int *nrows, SEXP init,SEXP fac1, SEXP typeordi, SEXP bgratio)
{
        double sum = dnorm(1.0/1, 0, 1, 0);
}

Compiling and building shared library:
   gcc -I/usr/lib64/R/include -fPIC -O2 -c test.o test.c
   gcc -shared -L/usr/local/lib -o test.so test.o -L/usr/lib64/R/lib -lR
Calling R and loading test.so works fine:
   >dyn.load("test.so")
   >
*************************************

Now, I would like to use other R functions e.g. the mean function from
the base package:

*************************************
#include <R.h>
#include <Rinternals.h>
#include <Rmath.h>
void test(int *nrows, SEXP init,SEXP fac1, SEXP typeordi, SEXP bgratio)
{
        double sum = mean(1.0);
}

Compiling and building shared library:
   gcc -I/usr/lib64/R/include -fPIC -O2 -c test.o test.c
   gcc -shared -L/usr/local/lib -o test.so test.o -L/usr/lib64/R/lib -lR

Calling R and loading test.so results in an error:
   > dyn.load("test.so")
   Error in dyn.load(x, as.logical(local), as.logical(now)) :
        unable to load shared library '/home/obc/test.so':


Any hint is welcome.

Olaf Schenk




More information about the R-help mailing list