Я создаю пакет R, который содержит функции Rcpp в зависимости от RcppArmadillo, поэтому сначала я создаю скелет пакета с помощью RcppArmadillo.package.skeleton
.Однако, когда я roxygenize
мой пакет, он выдает ошибку, показанную ниже.
R код
library(roxygen2)
library(RcppArmadillo)
library(Rcpp)
RcppArmadillo.package.skeleton(name = "prac_181206", example_code = FALSE)
roxygenize(package.dir = "prac_181206", roclets = "rd")
Ошибка
Error in getDLLRegisteredRoutines.DLLInfo(dll, addNames = FALSE) :
must specify DLL via a “DLLInfo” object. See getLoadedDLLs()
Потратив некоторое время, я понял, что это можно решить, удалив опцию .registration
в файле NAMESPACE
, представленном следующим образом.
Оригинальный файл NAMESPACE
useDynLib(prac_181206, .registration=TRUE)
importFrom(Rcpp, evalCpp)
exportPattern("^[[:alpha:]]+")
Короче говоря, после изменения первой строки выше на useDynLib(prac_181206)
все работает нормально, но я не понимаю, что означает ошибка и почему мое решение работает.
Не могли бы выкто-нибудь помочь мне с этим вопросом?Я ценю это!
Поскольку это игрушечный пример, который, мы надеемся, воспроизводим, я не включил никакие другие функции в папки man
или src
, созданные RcppArmadillo.package.skeleton
и выше.
К вашему сведению, соответствующая информация о моей платформе:
- Windows 7 x64
- R-3.5.1, Rstudio-1.1.423
- Rcpp-0.12.19,RcppArmadillo-0.9.100.5.0
- roxygen2-6.1.1