Den 2018-04-10 kl. 23:30, skrev Rampal Etienne:

Dear Thomas,

Yes, I followed all those suggestions but it did not fix the x64 notes. Indeed I am using Windows. I am going to try this on a Linux system.

On a 64-bit system you need to have 64-bit versions of the necessary tools on the path, but the Rtools installer defaults to 32-bit versions. The issue was brought up on the R-devel list about a year ago:

https://stat.ethz.ch/pipermail/r-devel/2017-February/073785.html


Henric Winell




Cheers, Rampal


On 10-Apr-18 14:17, Thomas Petzoldt wrote:
Hi,

I assume you followed "Writing R Extension" and the examples given in package deSolve (and maybe some other packages).

Am I right that this fixed the i386 notes, but not for x64?

Here I conclude that you tested it on Windows. This is relevant, because I remember a recent discussion (maybe on this mailing list), that the "register native routines" check can sometimes produce false positives on Windows.

Would it be possible for you, to check your package on a recent Linux system?


Thomas Petzoldt


Am 10.04.2018 um 13:19 schrieb Rampal S. Etienne:
Dear all,

I am using Fortran code with the deSolve package in my package called
"DDD". When checking my package I get the message:

checking compiled code ... NOTE
File 'DDD/libs/x64/DDD.dll':
   Found no calls to: 'R_registerRoutines', 'R_useDynamicSymbols'

It is good practice to register native routines and to disable symbol search.


Although it is "just" a note, I would like to solve this, but after
quite some googling, I cannot find a solution.

I have tried

tools::package_native_routine_registration_skeleton('.')
but this produces nothing, or only an empty file when I specify the
argument con. I put the following R-init_DDD.c in the src folder and
useDynLib("DDD",.registration = TRUE) in the namespace file. #include
<R.h> #include <Rinternals.h> #include <stdlib.h> // for NULL #include
<R_ext/Rdynload.h> /* .Fortran calls */ extern void
F77_NAME(fill1d)(double *vec, int *DIMP, double *parms, int *II); extern
void F77_NAME(initmod)(void (*steadyparms)(int *, double *)); extern
void F77_NAME(runmod)(int *neq, double *t, double *Conc, double *dConc,
double *yout, int *ip); static const R_FortranMethodDef FortranEntries[]
= { {"fill1d", (DL_FUNC) &F77_NAME(fill1d), 4}, {"initmod", (DL_FUNC)
&F77_NAME(initmod), 1}, {"runmod", (DL_FUNC) &F77_NAME(runmod), 6},
{NULL, NULL, 0} }; void R_init_DDD(DllInfo *dll) {
R_registerRoutines(dll, NULL, NULL, FortranEntries, NULL);
R_useDynamicSymbols(dll, FALSE); }

Note that I only get the message for x64, but I don't get it for i386,
which I did before. So somehow, this is only an issue on 64-bit? How do
I fix this?

Regards,

Rampal


______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel


______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to