用于C+的Rcpp插件+;11更新至R 3.4.0后不工作

用于C+的Rcpp插件+;11更新至R 3.4.0后不工作,r,c++11,rcpp,R,C++11,Rcpp,由于我将R更新为新版本3.4.0,因此启用C++11的Rcpp插件似乎无法正常工作。(请注意,这与此处报告的情况不同) 我有C++文件,需要C++ 11标准,我通过Rcpp使用命令 RCPP::SooCeCPP(Fo.CPP)< /C>编译。R默认标准是C++ 98,但是我可以通过在C++文件中添加以下命令来改变它 /[[Rcpp::插件(“cpp11”)] 这在新版本的R3.4.0中不再适用,我的编译器使用默认标准(C++98)而不是C++11,尽管有插件。它曾经与以前版本的R一起工作 目前我

由于我将R更新为新版本3.4.0,因此启用C++11的Rcpp插件似乎无法正常工作。(请注意,这与此处报告的情况不同)

<>我有C++文件,需要C++ 11标准,我通过Rcpp使用命令<代码> RCPP::SooCeCPP(Fo.CPP)< /C>编译。R默认标准是C++ 98,但是我可以通过在C++文件中添加以下命令来改变它
/[[Rcpp::插件(“cpp11”)]

这在新版本的R3.4.0中不再适用,我的编译器使用默认标准(C++98)而不是C++11,尽管有插件。它曾经与以前版本的R一起工作

目前我的解决方案是为我的R会话设置一个环境变量:
Sys.setenv(“PKG\u cxflags”=“-std=c++11”)

以下是我在R中使用的配置:
sessionInfo()
R version 3.4.0 (2017-04-21) Platform: x86_64-suse-linux-gnu (64-bit) Running under: openSUSE Leap 42.2
Matrix products: default BLAS: /usr/lib64/R/lib/libRblas.so LAPACK: /usr/lib64/R/lib/libRlapack.so locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages: [1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached): [1] compiler_3.4.0 rsconnect_0.4.3 tools_3.4.0
sessionInfo()
R版本3.4.0(2017-04-21) 平台:x86_64-suse-linux-gnu(64位) 正在运行:openSUSE Leap 42.2
矩阵乘积:默认值 BLAS:/usr/lib64/R/lib/libRblas.so LAPACK:/usr/lib64/R/lib/libRlapack.so 区域设置: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC\U地址=C LC\U电话=C LC\U测量=en\U US.UTF-8 LC\U标识=C
附加基本包: [1] 统计图形grDevices utils数据集方法库
通过命名空间加载(未附加): [1] 编译器\u 3.4.0 rsconnect\u 0.4.3工具\u 3.4.0

我使用Rcpp包版本0.12.1.0。 我的编译器如下:
~$g++--version | head-n1
~$ g++ --version | head -n1
g++ (SUSE Linux) 4.8.5
g++(SUSE Linux)4.8.5


我错过什么了吗?还有其他人遇到过同样的问题吗?

昨天在上一次会议上报告的问题已经解决,现在已经合并

所以现在只需升级到主分支,或者手动设置env.var。这是一个上游R更改,它打破了这一点,没有向后兼容的规定。

根据答案——只需插入

# R code
Sys.setenv("USE_CXX11" = "yes")
sourceCpp("code.cpp")

# C++ code
// [[Rcpp::plugins(cpp11)]]
// [[Rcpp::export]]                                                                       
double myhypot(double x, double y) {
return std::hypot(x,y);
}


。。。这真的很有效

谢谢你的及时回复!这充分解决了这里的问题。很高兴这有帮助,谢谢你接受答案。点击向上的三角形,也可以随意向上投票。谢谢在当前版本的Rcpp下,您不需要这些。非常感谢您的建议。。。而且它也真的有效!