R CMD check note: Found no calls to: "r registerRoutines", "R useDynamicSymbols"
Jak uniknąć poniższej notatki, która pojawia się w R CMD check
z nową wersją rozwojową R ( R Under development (unstable) (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.
Na przykład w Hmisc
2 answers
Wiadomość jest nieco tajemnicza. Rozejrzaĺ 'em siÄ ™ rĂłwnieĹź w innych pakietach i stwierdziĺ' em, Ĺźe useDynLib(packagename)
w pliku przestrzeni nazw zostaĹ ' a zamieniona na useDynLib(packagename, .registration = TRUE)
.
Dodatkowo dodałem plik .c
o nazwie registerDynamicSymbol
w katalogu src/
o następującym kodzie:
// 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);
}
Wziąłem tę sugestię z GitHub Rcpp . Odsyłacz kanoniczny znajduje się w zapisując rozszerzenia R
Również R Devel Mailinglist pod warunkiem uzupełnienia infos.
UPDATE
Najbardziej bezpośrednie proste podejście to:
- Użyj bieżącej wersji rozwojowej R (która ostatecznie stanie się 3.4)
- Uruchom
tools::package_native_routine_registration_skeleton(".")
i skopiuj i wklej pełne wyjście do plikupackagename_init.c
do umieszczenia wsrc/
- update
NAMESPACE
, sprawdzając, żeuseDynLib(packagename, .registration = TRUE)
- w razie potrzeby zastąp
exportPattern
przezexport( list of object to be exported )
UPDATE 18th July
Jak zauważył @Symbolix przy użyciu najnowszego wersja R i RStudio ' s devtools the point 2. (init.pliki c) są obsługiwane przez devtools (przy użyciu cyfry kontrolnej RStudio) lub pakiety narzędzi.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-18 20:12:30
Natknąłem się na trwały problem z pakietem Windows build. (.dll zamiast. so)
Przyjęta powyżej odpowiedź powinna również rozwiązać ten problem w systemie Windows, ale jeśli go nie rozwiąże. Upewnij się, że objdump.exe
wskazuje odpowiedni łuk. tj. .../Mingw_64/bin/objdump.exe
. Można to sprawdzić z wiersza polecenia za pomocą which objdump.exe
. Jakoś 32-bitowy objdump.exe
znalazł się na wyższym priorytecie na mojej ścieżce. To niedopasowanie łuku spowoduje błąd File format not recognized
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-14 03:07:01