Message: 4 Date: Sun, 27 Jun 2004 03:18:43 -0400 From: Lei Liu <[EMAIL PROTECTED]> Subject: [R] help in R calling C function To: [EMAIL PROTECTED] Message-ID: <[EMAIL PROTECTED]> Content-Type: text/plain; charset="us-ascii"; format=flowed
Hi there,
I want to call a C function in R. I have some experience on it, but this time I need to call another C function in the "main" C function. As a simple example, I use the following C code:
#include <stdio.h> #include <math.h> #include <stdlib.h> #include <time.h>
void main(double *alpha) { double test(); double beta; beta= *alpha *2 + test(*alpha); }
double test(double *alpha) { double value; value = *alpha *3; return(value); }
I used "gcc -c main.c" and "Rcmd SHLIB main.o" and I got the main.dll file. In R I use the following code to call the C function "main":
I do not have too much experience using C,
If you don't know, why do you post an answer without checking the manuals and trying out what you are suggesting? Your answer won't help and is at least partly incorrect.
> but do you need to compile
your test.c as well, something like
gcc -c main.c test.c
Well, if the code is within 2 files, you want to specify
R CMD SHLIB main.c test.c
(instead of 'R CMD SHLIB main')
and main.dll will be made (and linked correctly!). This way you do not need to bother with any flags for gcc.
dyn.load("c:/Program Files/R/rw1060/bin/main.dll")
I also suggest you to double check the path is correct.
a=4.2 b=.C('main', as.double(a))
Here you probably mean
a=4.2 *is* correct syntax as described in the green book as well as in the manuals (just a matter of taste whether you really want to use it).
Please check out my former answer pointing out what really went wrong in the C code ...
Uwe Ligges
a <- 4.2 b <- .C('main',as.double(a))
But the R system crashed. I know I can only define the function type in C as "void" to be called by R. But what if I want to call another C function in the "main" C function? Thank you for your help!
Sincerely,
Lei Liu
______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
