我正在使用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")
,但我不知道我做的是對的。對不起,但我對這個東西一無所知!
我正在使用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")
,但我不知道我做的是對的。對不起,但我對這個東西一無所知!
我會嘗試一些事情:
使用Boost寫三行獨立的C++程序,編譯它。這只是爲了向你自己證明你有-I/some/dir
標誌。
編寫一個簡單的Rcpp函數並使用例如sourceCpp()
來編譯和加載它。
創建一個文件~/.R/Makevars
和從1這裏設置的-I
標誌作爲任一個的一個或CXXFLAGS
CFLAGS
兩者都將通過R CMD ...
因此sourceCpp()
使用。
如果一切都失敗了,創建一個小包並添加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>
您是否得到一個特定的錯誤或編譯時,什麼不工作? – Pankrates 2013-04-21 13:26:56