在 Windows 上使用 C++11 和 Rcpp 构建 R 包

Posted

技术标签:

【中文标题】在 Windows 上使用 C++11 和 Rcpp 构建 R 包【英文标题】:Building R package with C++11 & Rcpp on Windows 【发布时间】:2013-09-24 00:41:05 【问题描述】:

系统规格:

操作系统 - Windows 7 Professional 和 Mac OS X 10.6.8 MinGW - 4.7.3 及以上版本 R - 3.0.1 Rcpp - 0.10.4

我无法在 Windows(32 位或 64 位版本)上编译包含 C++11 代码的工作包。 MinGW 编译并安装包,但使用调用 C++11 代码的函数会导致 R 崩溃。我正在使用 C++11 的 random 库 - 特别是带有 Mersenne Twister 生成器的简陋二项分布。

我确信我的代码是正确的,因为它的 UNIX 版本(在 Mac OS X 上使用 gcc 4.7.3 编译)可以按预期工作,完全没有任何问题。

问题不在于 Rcpp 或 RcppArmadillo - 事实上,我能够通过使用 Armadillo 的随机数生成器使我的包运行。但是,我非常渴望将来能够使用 C++11,尤其是库。

关于如何解决这个问题的任何想法?

【问题讨论】:

您是否必须做任何非标准的事情才能使用 MinGW 4.7.3 而不是 Rtools 中的那个(例如重建 R & Rcpp)? 【参考方案1】:

Rcpp Gallery 上有 C++11 示例——您可以尝试在最后重新运行这些示例。

特别是,this post creates RNG draws 使用三种不同的方式:R、Boost 和 C++11。你能看看这对你有用吗?

【讨论】:

是的,确实如此 - 问题出在我使用的种子上。我使用了 std::random_device - 看起来 Windows 不支持它。感谢您澄清这一点!

以上是关于在 Windows 上使用 C++11 和 Rcpp 构建 R 包的主要内容,如果未能解决你的问题,请参考以下文章

我应该如何使用英特尔的 Windows 编译器在命令行上禁用 C++0x 和/或 C++11?

无法使用 Tycho 和 Java 9 构建 Eclipse RCP 项目

我下载了RCP源码,如图,怎么部署到eclipse上?修改了源码后,怎么打包发布?

在 Windows 上默认启用 GCC 编译器 C++11 标志

开放型RCP设计方案

使用rcp命令实现从远程机器拷贝文件