Search code examples
c++rrcpprinside

Fatal error for <RInside.h>


I am running this example, through terminal. But got fatal error: RInside.h: No such file or directory error for the the line, #include<RInside.h>. Its a interface to R from c++. I have RInside package in R. my code:

#include<iostream>
#include<RInside.h>
using namespace std;
int main(){
    int a=12;
    cout<<a<<endl;
    return 0;  
}

Same error occurred for #include<Rcpp.h> header.

#include <Rcpp.h>

using namespace Rcpp;

// [[Rcpp::export]]
NumericVector callFunction(NumericVector x, Function f) {
    NumericVector res = f(x);
    return res;
}

Package RInside version 0.2.14

Package Rcpp version 0.12.17


Solution

  • The GNUmakefile shipped with RInside in the examples folder includes things like:

    ## comment this out if you need a different version of R, 
    ## and set set R_HOME accordingly as an environment variable
    R_HOME :=       $(shell R RHOME)
    
    [...]
    ## include headers and libraries for R 
    RCPPFLAGS :=        $(shell $(R_HOME)/bin/R CMD config --cppflags)
    RLDFLAGS :=         $(shell $(R_HOME)/bin/R CMD config --ldflags)
    RBLAS :=        $(shell $(R_HOME)/bin/R CMD config BLAS_LIBS)
    RLAPACK :=      $(shell $(R_HOME)/bin/R CMD config LAPACK_LIBS)
    
    ## if you need to set an rpath to R itself, also uncomment
    #RRPATH :=      -Wl,-rpath,$(R_HOME)/lib
    
    ## include headers and libraries for Rcpp interface classes
    ## note that RCPPLIBS will be empty with Rcpp (>= 0.11.0) and can be omitted
    RCPPINCL :=         $(shell echo 'Rcpp:::CxxFlags()' | $(R_HOME)/bin/R --vanilla --slave)
    RCPPLIBS :=         $(shell echo 'Rcpp:::LdFlags()'  | $(R_HOME)/bin/R --vanilla --slave)
    
    
    ## include headers and libraries for RInside embedding classes
    RINSIDEINCL :=      $(shell echo 'RInside:::CxxFlags()' | $(R_HOME)/bin/R --vanilla --slave)
    RINSIDELIBS :=      $(shell echo 'RInside:::LdFlags()'  | $(R_HOME)/bin/R --vanilla --slave)
    
    ## compiler etc settings used in default make rules
    CXX :=          $(shell $(R_HOME)/bin/R CMD config CXX)
    CPPFLAGS :=         -Wall $(shell $(R_HOME)/bin/R CMD config CPPFLAGS)
    CXXFLAGS :=         $(RCPPFLAGS) $(RCPPINCL) $(RINSIDEINCL) $(shell $(R_HOME)/bin/R CMD config CXXFLAGS)
    LDLIBS :=       $(RLDFLAGS) $(RRPATH) $(RBLAS) $(RLAPACK) $(RCPPLIBS) $(RINSIDELIBS)
    

    If you use GNU make, you can probably use this literally. Otherwise you will have to adapt it for your build environment. Please look at the provided examples for more details.