Я пытаюсь скомпилировать произвольный пакет, который в основном написан на RcppArmadillo. Ниже приведен пример моего исходного кода:
// [[Rcpp::interface(r,cpp)]]
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
using namespace Rcpp;
using namespace arma;
//' test function
//'
//' @param kap, a scalar value
//' @param m, an integer
//' @return a scalar value
//' @export
// [[Rcpp::export]]
double test_function(double kap, uword m){
return kap * m;
}
Я использую следующую команду для создания каркаса пакета:
RcppArmadillo.package.skeleton(name = "test")
Затем я добавляю файл исходного кода и атрибуты компиляции:
compileAttributes("test")
При этом создается файл RcppExport.cpp, по некоторым причинам, хотя я и использовал строку «использование пространства имен arma» в исходном исходном файле, он не переносится в файл RcppExport.cpp и не находится в заголовочном файле. создан в связи с Rcpp :: interface. Поэтому я добавляю эту строку в файл RcppExport.cpp и RcppExport.h самостоятельно. Тогда я пытаюсь сделать roxygenise:
roxygen::roxygenise("test")
и я получаю сообщение об ошибке:
'uword' has not been declared
Я в замешательстве, потому что я четко обозначил «использование пространства имен arma»; во всех необходимых файлах, но roxygen, похоже, не понимает этого ... Есть ли какой-то другой файл, где я должен был объявить arma пространства имен? Или я должен использовать arma :: uword в моем исходном файле?