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

时间:2013-04-21 13:10:56

标签: c++ boost rcpp

我在 R 3.0.0 上使用 Rcpp 包。我正在尝试运行this example,但我不能,因为我不知道如何使用 Boost

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

1 个答案:

答案 0 :(得分:12)

我会尝试一些事情:

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

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

  3. 创建一个文件~/.R/Makevars并将-I标记从1.设置为CXXFLAGSCFLAGS中的一个,这两个标记都将被R CMD ...因此sourceCpp()

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

  5. 编辑,约1年半后

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

    #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);
    }
    

    建立并运行得很好,因为我们同时更新了Rcpp和BH:

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