[Rd] R CMD check error (interfacing to C API of other pkg)
Martin Maechler
maechler at stat.math.ethz.ch
Fri Feb 10 17:26:07 CET 2017
>>>>> Therneau, Terry M , Ph D <therneau at mayo.edu>
>>>>> on Thu, 9 Feb 2017 12:56:17 -0600 writes:
> Martyn,
> No, that didn't work.
> One other thing in the mix (which I don't think is the issue) is that I call one of the
> C-entry points of expm. So the DESCRIPTION file imports expm, the NAMESPACE file imports
> expm, and the init.c file is
> #include "R.h"
> #include "R_ext/Rdynload.h"
> /* Interface to expm package. */
> typedef enum {Ward_2, Ward_1, Ward_buggy_octave} precond_type;
> void (*expm)(double *x, int n, double *z, precond_type precond_kind);
> void R_init_hmm(DllInfo *dll)
> {
> expm = (void (*)) R_GetCCallable("expm", "expm");
> }
> I don't expect that this is the problem since I stole the
> above almost verbatim from the msm package.
> Terry T.
Hmm. Yes, I can see that the CRAN package msm does do this, indeed.
It is interesting if/why that does not produce any notes or rather even warnings.
In principle, if you use the C API of 'expm' you should use
'LinkingTo: expm'
see *the* manual, specifically the section
https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Linking-to-native-routines-in-other-packages
and that section does mention that (unfortunately in my view)
you also should use 'Imports:' or 'Depends:' in addition to the 'LinkingTo:'
Note howver that 'expm' would not have to mentioned
in the NAMESPACE file.... unless your R functions do use some of
expm's R level functionality.
Martin
More information about the R-devel
mailing list