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:
- usar la versión actual de desarrollo R (que eventualmente se convertirá en 3.4)
- Ejecute las
tools::package_native_routine_registration_skeleton(".")
Y copie y pegue la salida completa en un archivopackagename_init.c
para ponerla ensrc/
- actualice
NAMESPACE
, verificando queuseDynLib(packagename, .registration = TRUE)
- Si es necesario, reemplace
exportPattern
conexport( 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
.