[R-pkg-devel] registering native routines

Rampal Etienne rampaletienne at gmail.com
Wed Apr 11 15:21:53 CEST 2018


Changing the path solved the problem. Thanks everyone!

Rampal


On 11-Apr-18 14:24, Marcelino de la Cruz Rot wrote:
> Thank you  for the hint, Henric.
> I was also having the same NOTE.
> Changing the path from \Rtools\mingw_32\bin to \Rtools\mingw_64\bin 
> solved it completely. Cheers, Marcelino
>
> El 11/04/2018 a las 11:56, Henric Winell escribió:
>> 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 at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>>>
>>
>> ______________________________________________
>> R-package-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>> .
>>
>



More information about the R-package-devel mailing list