[R] Build a package - check error

Uwe Ligges ligges at statistik.tu-dortmund.de
Sat Aug 20 15:37:33 CEST 2011



On 20.08.2011 00:41, Eduardo Mendes wrote:
> Hi
>
> I have modified the path to
>
> dyn.load(paste(Sys.getenv("R_LIBS_USER"),"/fortran/src/fortran.so",sep=""))


Hmmm, looks like you never took a look into the relevant manual "Writing 
R Extensions" nor in the help files I cited below.

?.First.lib has an example:

## Suppose a package needs to call a DLL named 'fooEXT',
## where 'EXT' is the system-specific extension.  Then you should use
.First.lib <- function(lib, pkg)
   library.dynam("foo", pkg, lib)


You cannot know that the package is in Sys.getenv("R_LIBS_USER")

Note also that the .so file won't be in the path ..../src/... but in 
.../lib/... once you install the package in the recommended way using R 
CMD INSTALL.

Really, please do read manual!!!




>
> and the package could installed, loaded and the lines with dyn.load worked.
> It does not look like a pretty solution but works on my linux (I am not sure
> if it works on my mac or windows).
>
> I am not sure if this is what you meant but as I have no clue what
> .First.lib does or NAMESPACES means this is the best I come up with.

So again time to read the manual and the help pages.

Best,
Uwe Ligges



> Please correct me if I am wrong.
>
> Many thanks
>
> Ed
>
>
>
> On Fri, Aug 19, 2011 at 6:03 PM, Uwe Ligges<ligges at statistik.tu-dortmund.de
>> wrote:
>
>>
>>
>> On 19.08.2011 22:53, Eduardo Mendes wrote:
>>
>>> Dear R-users
>>>
>>> I am slowly migrating my mex files (MATLAB - Fortran and C) to R.  To get
>>> my
>>> own functions available on R section I have decided to learn how to build
>>>   a
>>> R package. I choose a simple example with a few Fortran and R functions
>>> (wrapper).
>>>
>>> The fortran sources are located at src and the R functions at R (as
>>> recommended).  The building process went ok but R CMD check did not. The
>>> error mgs was
>>>
>>> Error in dyn.load("fortran.so") :
>>>    unable to load shared object
>>> '/home/eduardo/R_packages/**test.Rcheck/fortran.so':
>>>
>>> Although I can see that R cannot find the compiled fortran code I do not
>>> know what to do.   I believe it is something to do with the following
>>> lines
>>> in  the R-wrapper file
>>>
>>> if (!is.loaded('calnpr'))
>>>                     dyn.load("fortran.so")
>>>
>>
>>
>> 1. If the package is called calnpr, the shared library is also called that
>> way.
>> 2. you have to provide the path to the shared library.
>>
>> See ?.First.lib for how to do it in a package without NAMESPACE (and note
>> that NAMESPACES are forced for the next R release).
>>
>> Best,
>> Uwe Ligges
>>
>>
>>   How to add the path so that once the package is installed the compiled
>>> fortran code can be found?
>>>
>>> Many thanks
>>>
>>> Cheers
>>>
>>> Ed
>>>
>>>         [[alternative HTML version deleted]]
>>>
>>> ______________________________**________________
>>> R-help at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/**listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help>
>>> PLEASE do read the posting guide http://www.R-project.org/**
>>> posting-guide.html<http://www.R-project.org/posting-guide.html>
>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at 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.



More information about the R-help mailing list