[R] Using functions in LAPACK in a C program

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri Mar 30 07:55:33 CEST 2007


On Thu, 29 Mar 2007, Paul August wrote:

> Hi,
>
> I wonder where I can find an example of using a function in LAPACK 
> library in a user's own C code.

In about 20 R packages, e.g. the recommended package mgcv.

> I wrote a C program which will be 
> compiled and linked to produce a DLL file and then loaded into R. I hope 
> to use a function from LAPACK library, for example, dgesdd, in the 
> program. Following R manual, I call the function by F77_CALL(dgesdd) in 
> the program. The program can be compiled without problems. However, when 
> it is linked to produce a DLL file, I get an error message
>
>  Test.obj : error LNK2001: unresolved external symbol _dgesdd_
>  Test.dll : fatal error LNK1120: 1 unresolved externals
>
> I use VC++6.0 and the command of linking is something like this
>
>  link.exe Rdll.lib /nologo /dll /out:Test.dll /libpath:C:\R\R-2.2.1\src\gnuwin32 Test.obj
>
> Apparently, the linker cannot resolve dgesdd from Rdll.lib. If anyone 
> knows what I missed here or any example that shows how this can be done 
> properly, please let me know. Thanks a lot.

It is in Rlapack.dll not R.dll.

The linking information is in 'Writing R Extensions' for those using the 
recommended compilation system (search for LAPACK_LIBS).

You will need to build an import library for Rlapack.dll and link against 
that.

And BTW you seem to be using R 2.2.1: please update as we can only offer 
accurate advice on recent systems.

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-help mailing list