2013-07-04 3 views
4

Я пытаюсь скомпилировать пример Rarmadillo с Rinside и я получаю:не может скомпилировать 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'." 

Я гугл, но я продолжаю получать исходный код как таковой. Есть идеи ?

Код:

// -*- 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.h включен по RInside.h.

Для магии, которую дает RcppArmadillo, файл RcppArmadillo.h необходимо загрузить до Rcpp.h. Поэтому я предлагаю вам сделать это:

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

То же самое верно для второго примера в этом каталоге, а исправление переупорядочения было совершено в апреле - мы просто не выпустили RInside с тех пор. –