[R] Calling C code from R...wrapping C structures

From: Nathan Harmston <iwanttobeabadger_at_googlemail.com>
Date: Tue, 13 May 2008 12:51:10 +0100


Hi everyone,

I am currently trying to call some C code from R, specifically calling a function which populates a C struct.

typedef struct{

   // contents
} Model;

void test(Model *m){

   // fill the struct with crap
}

I compile the C code into a shared library, which loads into R properly. My simple test functions work (i.e adding numbers etc) setModel <- function(){

   model<-vector("list", 6)
   name(model) <- c( SET THE NAMES OF THE MODEL HERE )    model
}

t <- setModel()
testcode <- function(setModel){

dyn.load("Simulation.so")

foo <- .C("test", Model=setModel)
foo
}

testcode(t)

However I get segfaults whenever I try to access any of the variables contained in Model. So my question is: am I doing something wrong here? Is list the right data type to wrap a structure in? I cant see any documentation about wrapping structs in R.

Also when I pass strings to C from R they dont seem to be passed at all? Is this a problem with R or a problem with me and if so how do I fix it?

Many Thanks in advance,

Nathan

        [[alternative HTML version deleted]]



R-help_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. Received on Tue 13 May 2008 - 14:18:01 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 14 May 2008 - 14:30:37 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive