构建任意RcppArmadillo程序包时“使用命名空间机制”的问题

时间:2018-08-31 18:36:14

标签: armadillo roxygen

我正在尝试编译一个主要用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文件中。然后我尝试做氧合:

roxygen::roxygenise("test")

我收到一条错误消息:

'uword' has not been declared

我很困惑,因为我明确提出了“使用名称空间方法”;在所有必需的文件中,但是roxygen似乎并没有理解这一点。...还有其他我应该在其中声明名称空间arma的文件吗?还是我必须在源文件中使用arma :: uword?

0 个答案:

没有答案