Thank you Duncan, the paths were first so that wasn't the problem, but when I changed to the directory of the file and then typed rcmd SHLIB it did work, like you said. Great news.
Best, Denise --- On Thu, 3/11/10, Duncan Murdoch <murd...@stats.uwo.ca> wrote: From: Duncan Murdoch <murd...@stats.uwo.ca> Subject: Re: [R] Problem with rcmd SHLIB To: "denise xifaras" <denisexifa...@yahoo.com> Cc: r-help@r-project.org Date: Thursday, March 11, 2010, 8:03 AM On 11/03/2010 10:57 AM, denise xifaras wrote: > Hi all, > > I am trying to call a C function from R (version 2.10.1) on a windows machine. > > The C code is in a .c file, I have pasted the code below although I'm very > confident that it does not contain any errors (it is not my code), but also, > the problem that I have occurs with every .c file that I have tried this with. > > I have installed Rtools and included: C:\Rtools\bin; C:\Rtools\perl; > C:\Rtools\MinGW\bin;"C:\Program Files\R\R-2.10.1\bin" > in my path from My Computer. > That is not sufficient: those need to be first, not just "included". There are often other versions of make or find or the other tools installed on Windows systems. > I would like to create a .dll file in order to load it in R and call the C > function. > > In the command prompt I type: > rcmd SHLIB C:\...\filename.c (or R CMD SHLIB C:\...\filename.c) > and I get the message: > make: nothing to be done for 'all' > I would recommend switching to that directory, then using Rcmd SHLIB filename.c. Windows pathnames sometimes have spaces in them which can mess up the tools. Duncan Murdoch > I understand that this message means that the particular file has already > been compiled and no changes have been made and so the .dll file must already > exist. The problem is that this hasn't happened. I have never compiled a .c > file this way on this computer and there definitely aren't any .dll files as > compiling hasn't ever actually worked. > > Any ideas about why this is happening? > > Thank you all in advance for the help and any feedback, > > Best, > Denise > > C code: > > void convolve1(double *a, int *na, > double *b, int *nb, double *ab) > { > int i, j, nab = *na + *nb - > 1; > for (i = 0; i < nab; i++) ab[i] = 0.0; > for (i = 0; i < *na; i++) > for (j = 0; j < *nb; j++) > ab[i + j] += a[i] + b[j]; > } > > > > [[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. > [[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.