Dear list;
This might sound a bit naive, but then I am new to linking C DLL's to R.

I have built a DLL using GCC and am able to load the DLL in R (is.loaded("contents")==TRUE). When I include it in my function it returns NaN for all the variables. My R function is,

dyn.load("c:/data/tempdll.dll")
is.loaded("contents")#returns TRUE
#
contents <- function(new.cases){
   cases <- rep(0, length(new.cases))
   case.times <- rep(0, length(new.cases))
   temp <- .C("contents",
       as.integer(cases),
       as.double(case.times))
}

and the header of my C function is
#ifndef _DLL_H_
#define _DLL_H_

#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */


DLLIMPORT void contents (int *cases, double *case_times); #endif /* _DLL_H_ */

and my C function is.
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include "dll.h"
#include <gsl/gsl_rng.h>
#include <gsl/gsl_randist.h>


void contents(int *cases, double *case_times) { gsl_rng * r; gsl_rng_env_setup(); r = gsl_rng_alloc (gsl_rng_default); int i; for(i = 0; i < 1000; i++) { cases[i] = gsl_ran_negative_binomial (r, 0.10/2.10, 0.10); case_times[i] = gsl_ran_weibull (r, 9, 5); } gsl_rng_free (r); }

I am clueless as to where it all goes wrong, as if I make the program an executable it works.

Thanks again.

Vumani

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to