0

这个问题是通过win-builder-r在windows上测试我的R(RcppParallel)包引起的,至于我的mac没有问题。

"error: 'mt19937' is not a member of 'std'"

此外,此错误首先出现:

D:/Compiler/gcc-4.9.3/mingw_32/i686-w64-mingw32/include/c++/bits/c++0x_warning.h:32:2: error: #error 此文件需要编译器和库支持 ISO C++ 2011 标准。此支持目前是实验性的,必须使用 -std=c++11 或 -std=gnu++11 编译器选项启用。

可以从这个较早的帖子中找到一个最小的例子,使用最后一个:在公共工作者中调用'mypackage'函数

4

1 回答 1

3

<random>通常,特别是标头仅std::mt19337适用于 C++11 及更高版本。如果你想在 R 包的上下文中在 Windows 上使用 C++11,你应该添加

CXX_STD = CXX11

src/Makevars.win(来源:编写 R 扩展)。在其他平台上,通常没有此功能,因为使用了默认使用 C++11 的较新编译器。但是,请注意 WRE 不鼓励使用randomC++11,可能是因为分布函数是实现定义的。

于 2018-10-09T08:46:03.233 回答