Hi, My function test is properly declared in the header file of the code:
void test(Model *); and we just discovered yesterday we should be using .Call instead ,of .C. However we still can't get it to work. We arent trying to pass a primitive type from R but a complex one. We are trying to interface R with a C shared library, which is already written. Can structs be defined in R and passed to C and returned (by reference obviously). We don't really want to pass a list rather a struct, so would a frame be a better idea? This seems like it should be possible in R...(sorry I dont have much experience in linking C and R together) Nathan 2008/5/14 Ramon Diaz-Uriarte <[EMAIL PROTECTED]>: > Dear Nathan, > > How is you C function "test" defined? What type of argument is it > expecting? The mappings between R and C type of arguments you can pass > is explained in: > > > http://cran.r-project.org/doc/manuals/R-exts.html#Interface-functions-_002eC-and-_002eFortran > > which also provides some examples. If you want to pass a list, you'll > probably have to use .Call, not .C. > > HTH, > > R. > > > > On Tue, May 13, 2008 at 1:51 PM, Nathan Harmston > <[EMAIL PROTECTED]> wrote: > > 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@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. > > > > > > -- > Ramon Diaz-Uriarte > Statistical Computing Team > Structural Biology and Biocomputing Programme > Spanish National Cancer Centre (CNIO) > http://ligarto.org/rdiaz > [[alternative HTML version deleted]] ______________________________________________ R-help@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.