tools paquete instalar how dev r compilation devtools

paquete - Nota de verificación de R CMD: No se encontraron llamadas a: ''R_registerRoutines'', ''R_useDynamicSymbols''



install devtools r ubuntu (2)

El mensaje es algo arcano. Miré a mi alrededor también en otros paquetes y descubrí que useDynLib(packagename) en el archivo NAMESPACE fue reemplazado por useDynLib(packagename, .registration = TRUE) .

Además, agregué un archivo .c , llamado registerDynamicSymbol en el directorio src/ con el siguiente código:

// RegisteringDynamic Symbols #include <R.h> #include <Rinternals.h> #include <R_ext/Rdynload.h> void R_init_markovchain(DllInfo* info) { R_registerRoutines(info, NULL, NULL, NULL, NULL); R_useDynamicSymbols(info, TRUE); }

Tomé esta sugerencia de GitHub Rcpp . La referencia canónica está en Escribir Extensiones R

También R Devel Mailinglist proporcionó informaciones suplementarias.

ACTUALIZAR

El enfoque directo más directo es:

  1. usar la versión actual de desarrollo R (que eventualmente se convertirá en 3.4)
  2. Ejecute las tools::package_native_routine_registration_skeleton(".") Y copie y pegue la salida completa en un archivo packagename_init.c para ponerla en src/
  3. actualice NAMESPACE , verificando que useDynLib(packagename, .registration = TRUE)
  4. Si es necesario, reemplace exportPattern con export( list of object to be exported )

ACTUALIZACIÓN 18 de julio

Como lo señaló @Symbolix usando la versión más reciente de R y los controles de RStudio, el punto 2. (archivos init.c) aparece manejado por devtools (usando el dígito de verificación RStudio) o paquetes de herramientas.

¿Cómo evitar la siguiente NOTA que aparece en la R CMD check con la nueva versión de desarrollo de R (R En desarrollo (inestable) (2017-02-15 r72179))?

• checking for unstated dependencies in examples ... OK • checking line endings in C/C++/Fortran sources/headers ... OK • checking compiled code ... NOTE File ‘pkgname/libs/pkgname.so’: Found no calls to: ‘R_registerRoutines’, ‘R_useDynamicSymbols’ It is good practice to register native routines and to disable symbol search.

Por ejemplo en Hmisc


Me encontré con un problema persistente con un paquete de compilación de Windows. (.dll en lugar de .so)

La respuesta aceptada anteriormente también debería resolver este problema para Windows, pero si no lo resuelve. Asegúrese de que objdump.exe esté apuntando el arco apropiado. es decir .../Mingw_64/bin/objdump.exe . Esto se puede verificar desde un símbolo del sistema con el which objdump.exe . De alguna manera, un objdump.exe 32 bits encontró su camino hacia una posición de mayor prioridad en mi ruta. Esta falta de coincidencia de arco producirá un error de File format not recognized .