[R] simple example of C interface to R
jbdunsmo@utmb.edu
jbdunsmo at utmb.edu
Tue Feb 8 18:13:49 CET 2005
On Tue, Feb 08, 2005 at 10:55:01AM +0100, Rau, Roland wrote:
>
> do you know already the page of Roger D. Peng?
> He has a document entitled "An Introduction to the .C Interface to R".
> It is located at:
> http://www.biostat.jhsph.edu/~rpeng/docs/interface.pdf
>
thanks. that's a nice tutorial, but what i'd really like to do is
write a program with R embedded in it (and not have to load the
interpreter). i found some documentation for doing that here:
http://cran.r-project.org/doc/manuals/R-exts.html#Embedding-R-under-Unix_002dalikes
now i'm going through the tests/Embedding directory (included with the
R source distribution).
i've gotten Rtest.c to compile with:
$ R CMD SHLIB Rtest.c
gcc -I/usr/lib/R/include -I/usr/local/include -D__NO_MATH_INLINES -mieee-fp -fPIC -march=pentium4 -O3 -pipe -fomit-frame-pointer -c Rtest.c -o Rtest.o
gcc -shared -L/usr/local/lib -o Rtest.so Rtest.o -L/usr/lib/R/bin -lR
then when i try to run Rtest.o, i get:
-/bin/bash: ./Rtest.o: cannot execute binary file
Rtest.c contains:
#include "embeddedRCall.h"
int
main(int argc, char *argv[])
{
eval_R_command("print", argc, argv);
return(0);
}
embeddedRCall.h contains:
#ifndef EMBEDDED_R_CALL_H
#define EMBEDDED_R_CALL_H
#include <Rinternals.h>
int eval_R_command(const char *funcName, int argc, char *argv[]);
SEXP Test_tryEval(SEXP expression, int *errorOccurred);
void init_R(int argc, char **argv);
#endif
i also get the "cannot execute binary file" error when trying to
compile and run the following code from the documentation:
int Rf_initEmbeddedR(int argc, char **argv)
{ /* This is already compiled into R */
Rf_initialize_R(argc, argv);
setup_Rmainloop();
return(1);
}
int main(int ac, char **av)
{
/* do some setup */
// Rf_initEmbeddedR(argc, argv);
/* do some more setup */
char *argv[]= {"REmbeddedPostgres", "--gui=none", "--silent"};
Rf_initEmbeddedR(sizeof(argv)/sizeof(argv[0]), argv);
/* submit some code to R, which is done interactively via
run_Rmainloop();
*/
end_Rmainloop();
return 0;
}
what am i doing wrong?
More information about the R-help
mailing list