2013-07-04 40 views
4

我試圖編譯Rinside的Rarmadillo例子,我不斷收到:不能與犰狳的例子編譯rinside

In file included from rinside_arma0.cpp:8:0: 
/usr/local64/opt/R-2.15.2/lib/R/library/RcppArmadillo/include/RcppArmadillo.h:26:6: error: #error "The file 'Rcpp.h' should not be included. Please correct to include only 'RcppArmadillo.h'." 

我GOOGLE了,但我不斷收到的源代碼本身。有任何想法嗎 ?

的代碼是:

// -*- c-indent-level: 4; c-basic-offset: 4; indent-tabs-mode: nil; -*- 
// 
// Simple example using Armadillo classes 
// 
// Copyright (C) 2012 Dirk Eddelbuettel and Romain Francois 

#include <RInside.h>     // for the embedded R via RInside 
#include <RcppArmadillo.h> 

int main(int argc, char *argv[]) { 

    RInside R(argc, argv);  // create an embedded R instance 

    std::string cmd = "diag(3)"; // create a Matrix in r 

    arma::mat m = Rcpp::as<arma::mat>(R.parseEval(cmd)); // parse, eval + return result 

    std::cout << m << std::endl; // and use Armadillo i/o 

    exit(0); 
} 

,並使用它編譯:

g++ -I/usr/local64/opt/R-2.15.2/lib/R/include -I/usr/local64/opt/R-2.15.2/lib/R/library/Rcpp/include -I"/usr/local64/opt/R-2.15.2/lib/R/library/RcppArmadillo/include" -I/usr/local64/opt/R-2.15.2/lib/R/library/RInside/include -g -O2 -Wall -I/usr/local/include rinside_arma0.cpp -L/usr/local64/opt/R-2.15.2/lib/R/lib -lR -lf77blas -latlas -llapack -L/usr/local64/opt/R-2.15.2/lib/R/library/Rcpp/lib -lRcpp -Wl,-rpath,/usr/local64/opt/R-2.15.2/lib/R/library/Rcpp/lib -L/usr/local64/opt/R-2.15.2/lib/R/library/RInside/lib -lRInside -Wl,-rpath,/usr/local64/opt/R-2.15.2/lib/R/library/RInside/lib -o rinside_arma0 
+0

你可以把rinside_arma0.cpp的代碼和你用來編譯 – dickoa

+0

完成的命令,我編輯它 – madreblu

+0

您應該考慮使用一個Makefile來簡化你的編譯過程,使它更容易理解。以'/ usr/local64/opt/R-2.15.2/lib/R/library/RInside/examples/armadillo/Makefile'爲例。你使用哪個平臺? – dickoa

回答

9

你得到的錯誤是因爲Rcpp.h包括RcppArmadillo.h之前,Rcpp.hRInside.h包括在內。

對於RcppArmadillo給你的魔法,需要在Rcpp.h之前加載文件RcppArmadillo.h。因此,我建議你這樣做:

#include <RcppArmadillo.h> 
#include <RInside.h> 
+1

對於該目錄中的第二個示例也是如此,並且重新排序修復在4月份提交 - 我們自此以後才發佈了RInside。 –