F77_CALL/NAME problem
On Wed, Mar 25, 2015 at 4:44 AM, bstr <nicola.lunardon at hotmail.it> wrote:
Dear R-devel,
I am trying to use Fortran DGESV subroutine into C. Here it is the relevant
part of the C file I am currently writing
#include<stdio.h>
#include<R.h>
#include<Rmath.h>
#include<math.h>
void F77_NAME(DGESV)( int*, int*, double*, int*, int*, double*, int*, int*);
void solve( int *p, double *A, double *Ainv)
{
...
F77_CALL(DGESV)(p, p, Ain, p, ipiv, Bin, p, &info);
}
Try lower case.
void F77_NAME(dgesv)( int*, int*, double*, int*, int*, double*, int*, int*);
void solve( int *p, double *A, double *Ainv)
{
...
F77_CALL(dgesv)(p, p, Ain, p, ipiv, Bin, p, &info);
}
The lapack.so file has a name "dgesv_" in it, not DGESV_.
In order to create the ".so" file to load in R I downloaded the dgesv.f file as well as the dependencies (dgetf2.f dgetrf.f dgetrs.f dlaswp.f). As I was used to I ran in a terminal R CMD COMPILE *.f R CMD SHLIB MY_C_FILE.c *.o to get the MY_C_FILE.so file. However, when I try to load it in a R session I get the following error message "undefined symbol: DGESV_". Similar errors are occurring with some other (old) C files that I was used to use a couple of years ago. In this connection I have to say that those file were working under an older linux version (I guess ubuntu 12.04 LTS rather than the current one which is 14.04 LTS). Best Regards, N. Lunardon
If you sent twitter messages while exploring, are you on a textpedition? He's about as useful as a wax frying pan. 10 to the 12th power microphones = 1 Megaphone Maranatha! <>< John McKown