我正在尝试使用Rcpp11绑定编译R包以在后台使用C ++ 11二进制文件。我已经在Mac上成功编译并使用了此软件包(OSX 10.9.5,编译器为clang ++):

Apple LLVM version 6.0 (clang-600.0.51) (based on LLVM 3.5svn)Target: x86_64-apple-darwin13.4.0Thread model: posix

但是,使用g ++编译器版本4.4.7-4在64位Red Hat Linux下进行编译的尝试失败,因为找不到名为future的标头或库或名称空间:

In file included from RcppExports.cpp:4:/path/to/R-libs/3.1/Rcpp11/include/Rcpp.h:50:18: error: future: No such file or directory

据我所知,future是C ++ 11规范的一部分。我发现奇怪的是,成功加载了其他几个名称空间(我们成功将其添加到Rcpp.h的第50行),但是future却没有。这是由于使用了过时的编译器吗?作为参考,我将实际的调用附加到失败的g ++编译器:

g++ -m64 -std=c++0x -I/usr/include/R -DNDEBUG -I/usr/local/include -I"/path/to/R-libs/3.1/Rcpp11/include" -fpic -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -c RcppExports.cpp -o RcppExports.o

最佳答案

Rcpp11不编译时,通常意味着该编译器不是C ++ 11编译器。 Rcpp11的先前版本在C++11的含义上进行了一些折衷,但后续版本不会妥协。 C++11 = C++11,而不是未完成的C++0x

C++11和前奏之所以如此出色,是因为所有这些元素如何融合在一起。

拥有C++11编译器是使用Rcpp11所要付出的代价。我将此视为功能。

关于c++ - 在Rcpp11下编译失败,找不到“ future ”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26473038/

10-12 17:49
查看更多