2013-04-21 197 views
0

我正在使用Rcpp封裝在R 3.0.0。我試圖運行this example,但我不能因爲我不知道如何使用Boost如何使用Rcpp在C++中使用Boost庫

我在目錄/ Users/giorgi/boost_1_53_0中安裝了Boost,因此我設置了Sys.setenv("PKG_CXXFLAGS"="-I /Users/giorgi/boost_1_53_0"),但我不知道我做的是對的。對不起,但我對這個東西一無所知!

+0

您是否得到一個特定的錯誤或編譯時,什麼不工作? – Pankrates 2013-04-21 13:26:56

回答

11

我會嘗試一些事情:

  1. 使用Boost寫三行獨立的C++程序,編譯它。這只是爲了向你自己證明你有-I/some/dir標誌。

  2. 編寫一個簡單的Rcpp函數並使用例如sourceCpp()來編譯和加載它。

  3. 創建一個文件~/.R/Makevars和從1這裏設置的-I標誌作爲任一個的一個或CXXFLAGSCFLAGS兩者都將通過R CMD ...因此sourceCpp()使用。

  4. 如果一切都失敗了,創建一個小包並添加LinkingTo: BH作爲CRAN包BH提供的Boost頭可以使用(一旦你安裝BH)。

編輯,約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>