[Rd] Problem with shared library and lapack under windows
Berend Hasselman
bhh at xs4all.nl
Wed Jun 3 11:03:27 CEST 2015
> On 03-06-2015, at 09:48, bstr <nicola.lunardon at hotmail.it> wrote:
>
> Hi all,
>
> I have a C function, say Cfun, that calls Lapack's DGEMM routine and I need
> to create a shared library to use Cfun inside R. The C file is the following
>
> #include<stdio.h>
> #include<R.h>
> #include<R_ext/Lapack.h>
>
>
> void Cfun(double *res, double *X, int *n, int *q)
> {
> char *ptr_TRANSA, TRANSA='T', *ptr_TRANSB, TRANSB='N';
> ptr_TRANSA=&TRANSA;
> ptr_TRANSB=&TRANSB;
> double *ptr_ALPHA, ALPHA=1.0, *ptr_BETA, BETA=0.0;
> ptr_ALPHA=&ALPHA;
> ptr_BETA=&BETA;
>
> dgemm_(ptr_TRANSA, ptr_TRANSB, q, q, n, ptr_ALPHA, X, n, X, n, ptr_BETA,
> res, q);
> }
>
> In Ubuntu I have no problem in compiling: R CMD SHLIB -llapack myfile.c.
> However, under Windows the -llapack flag is not recognised and I am able to
> get the code compiled only if I build an R package with the suitable
> Makevars file options: PKG_LIBS=$(LAPACK_LIBS) $(FLIBS). Is there a way to
> get the .dll without resorting to build a package?
>
I wouldn’t exactly know since I’m not using Windows.
Try this:
R CMD config LAPACK_LIBS
to see the command line options needed.
And why are you using dgemm_?
Use the F77_CALL macro provided by R; you’ll be less system dependent that way.
Berend
More information about the R-devel
mailing list