[Rd] calling native routines in another package (Sec 5.4.2 of Writing R Extensions)

Dirk Eddelbuettel edd at debian.org
Fri Jan 13 21:58:15 CET 2017


On 13 January 2017 at 13:25, Charles Geyer wrote:
| I just (apparently) figured out how to do the stuff described in
| Section 5.4.2 of
| Writing R Extensions.  I put my test toy packages on github
| <https://github.com/cjgeyer/linkingTo> for anyone to copy.  If anyone
| cares to read the README and the bits of code it links to and tell me
| anywhere I am wrong, I would be grateful.
| 
| But the main point of this e-mail is a complaint about that section of
| Writing R Extensions.  It says (even in R-devel) "A CRAN example of
| the use of this mechanism is package lme4, which links to Matrix." but
| that does not appear to be true anymore.  I cannot see any inclusion
| of headers from Matrix in lme4 nor any call to R_GetCCallable.  I did
| find the file inst/include/Matrix_stubs.c in the Matrix package
| somewhat helpful (although mystifying at first).
| 
| So this can be considered a documentation bug report (if I am
| correct).  Do I need to do an official bugzilla one?
| 
| Just a further check.  lme4 (1.1-12) does not have Matrix in the
| LinkingTo field of its DESCRIPTION file, so headers from Matrix cannot
| be used.  And
| 
|     grep R_Get *.[ch]*
| 
| in the src directory of lme4 returns nothing.

There are a few other packages doing this

RcppXts uses exported C code from xts [1]
RcppRedis users export C code from RApiSerialize
RcppKalman uses expm
Vincent Goulet just release expint which offers an API

Dirk

[1] Vincent and I went over this recently when he prepared expint. While I
(re-)wrote a large part of the xts header for use by RcppXts and others, I
didn't leave my name in the header so Jeff got author credits for expint
instead.  C'est la vie.

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org



More information about the R-devel mailing list