我正在尝试编译一个主要用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?