【问题标题】:Rcpp Armadillo randg()Rcpp 犰狳 randg()
【发布时间】:2015-12-03 01:18:53
【问题描述】:

我无法运行我的 Rcpp Armadillo 代码

return arma::randg<arma::mat>(n,1,arma::distr_param(shape,scale));  

返回错误; 错误:randg():需要 C++11 编译器

我的 g++ 版本是 5.1.0。我该怎么办?

【问题讨论】:

  • 您可以考虑阅读有关如何打开 C++11 编译的 Rcpp 文档。我们解释清楚。此外,搜索引擎可能会有所帮助——在第一次点击时对我有用。你真的还没有遇到过 Rcpp 手册或Rcpp Gallery 吗?
  • 我检查了很多与这个问题相关的网站,但似乎没有与 g++ 版本相关的问题,但我仍然有这个问题。
  • @Shin - 将-std=c++11 添加到您的编译器标志中。

标签: g++ rcpp armadillo


【解决方案1】:

Rcpp Gallery 有一个标签,在标签c++11 下你会找到three dedicated answers to C++11 and Rcpp

第一个有这个例子:

#include <Rcpp.h>

// Enable C++11 via this plugin (Rcpp 0.10.3 or later)
// [[Rcpp::plugins(cpp11)]]

// [[Rcpp::export]]
int useAuto() {
    auto val = 42;      // val will be of type int
    return val;
}

它包含您需要的一切,包括将所需的-std=c++11 开关添加到编译器调用的插件说明

注意:我已经在this answer 中告诉过你要查看Rcpp Gallery

注意 2:当您在 StackOverflow 的上方搜索框中使用诸如 [rcpp] c++11 之类的字符串进行搜索时,您还会得到 124 个结果。

【讨论】:

  • 我阅读了您提到的所有答案,但也许我错过了一些要点。 c=' #include // 通过此插件启用 C++11(Rcpp 0.10.3 或更高版本) // [[Rcpp::plugins(cpp11)]] // [[Rcpp::export] ] int useAuto() { auto val = 42; // val 将是 int 类型 return val; } ' cppFunction(code=c) 我还有无法识别的命令行选项 '-std=c++11' 问题
  • 正如我之前告诉你的,请阅读 Rcpp 属性小插图。它解释了这一点。
  • 我已经解决了我在代码开头添加'// [[Rcpp::plugins(cpp11)]]'的问题,它已经解决了。
  • 是的,当然。解释这一点的帖子自 2013 年 1 月以来一直在 Rcpp Gallery 中。
  • 是的,它被标记为正确答案。也可能有系统->高级系统设置->环境变量->路径问题需要考虑这些问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-17
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多