带有RcppArmadillo和c+的包装+;11不要导出函数

带有RcppArmadillo和c+的包装+;11不要导出函数,r,c++11,rcpp,R,C++11,Rcpp,如果我编写了以下代码(*.cpp文件),一切正常,我可以在R中使用该函数: // [[Rcpp::depends(RcppArmadillo)]] // [[Rcpp::plugins(cpp11)]] #include <RcppArmadillo.h> // [[Rcpp::export]] arma::vec foo() { arma::vec x = { 1.1, 2.2 }; return x; } // [[Rcpp::export]] int useAuto

如果我编写了以下代码(*.cpp文件),一切正常,我可以在R中使用该函数:

// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::plugins(cpp11)]]

#include <RcppArmadillo.h>


// [[Rcpp::export]]
arma::vec foo() {
 arma::vec x = { 1.1, 2.2 };
 return x;
}

// [[Rcpp::export]]
int useAuto() {
  auto val = 42;
 return val;
}
/[[Rcpp::depends(RcppArmadillo)]]
//[[Rcpp::插件(cpp11)]]
#包括
//[[Rcpp::导出]]
arma::vec foo(){
arma::vecx={1.1,2.2};
返回x;
}
//[[Rcpp::导出]]
int useAuto(){
自动val=42;
返回val;
}
但是,如果我在包中使用它们并构建包,如果我尝试使用R中的函数,则会收到以下错误消息:

Error in .Call(<pointer: (nil)>) : NULL value passed as symbol address**
.Call()中的
错误:作为符号地址传递的空值**
这似乎是RcppArmadillo的一个问题,因为如果我删除所有RcppArmadillo特性并只使用Rcpp,那么它就可以正常工作


我包括了一个src/Makevars.*和CXX_STD=CXX11,但这对解决此问题没有帮助。

我认为您试图从全局环境调用
foo
,但它已消失,因为安装重新启动了会话。请尝试
rm(foo)
。恐怕您需要向我们显示包。这确实是全局环境和会话重新启动的问题。谢谢你的帮助。