如何在C++中使用Rcpp的Boost库

use*_*364 3 c++ boost rcpp

我在R 3.0.0上使用Rcpp包.我试图运行这个例子,但我不能,因为我不知道如何使用Boost.

我在目录/ Users/giorgi/boost_1_53_0中安装了Boost,因此我设置Sys.setenv("PKG_CXXFLAGS"="-I /Users/giorgi/boost_1_53_0")但我不确定我做的是正确的.对不起,但我对这些东西一无所知!

Dir*_*tel 14

我会尝试一些事情:

  1. 使用Boost编写一个三行独立的C++程序,并进行编译.这只是为了向自己证明你有-I/some/dir正确的旗帜.

  2. 编写一个简单的Rcpp函数并使用eg sourceCpp()编译和加载它.

  3. 创建一个文件~/.R/Makevars,并设置-I从1这里作为标志的任一个一个CXXFLAGSCFLAGS两个,这将通过使用R CMD ...并因此sourceCpp().

  4. 如果其他一切都失败了,创建一个小包并添加LinkingTo: BH为CRAN包BH提供你可以使用的Boost头(一旦你安装BH).

编辑,大约1年半之后

您也可以// [[Rcpp::depends(BH)]]在此代码中使用as

#include <Rcpp.h>
#include <boost/math/common_factor.hpp>  // included in BH  

// [[Rcpp::depends(BH)]]    

using namespace Rcpp;

// [[Rcpp::export]]   
int computeGCD(int a, int b) {
  return boost::math::gcd(a, b);
}
Run Code Online (Sandbox Code Playgroud)

在此期间我们更新Rcpp和BH时构建和运行得很好:

R> library(Rcpp)
R> sourceCpp("/tmp/simpleBoost.cpp")
R> computeGCD(6, 15)
[1] 3
R> 
Run Code Online (Sandbox Code Playgroud)