library(inline); library(RcppArmadillo) rowSumsRA <- cxxfunction(signature(x = "numeric"), plugin="RcppArmadillo", body='return Rcpp::wrap(arma::sum(as<arma::mat>(x),0));')
colSumsRA <- cxxfunction(signature(x = "numeric"), plugin="RcppArmadillo", body='return Rcpp::wrap(arma::sum(as<arma::mat>(x),1));') Anirban > Date: Wed, 26 Jun 2013 11:11:04 +0200 > From: John Swan <johns...@spamcop.net> > To: rcpp-devel@lists.r-forge.r-project.org > Subject: [Rcpp-devel] Seamless Rcpp gives errors with RcppArmadillo > Message-ID: <99384497-d7c4-4bc6-859e-c3fa1ab5f...@spamcop.net> > Content-Type: text/plain; charset="windows-1252" > > Hi, > > I just purchased Dirk's book on Seamless Rcpp and I'm finding it very > useful. > > However, I'm having a strange error running RcppArmadillo inline, where > the book examples seem to manage it effortlessly. > I've been stuck on this for hours. Any help is most appreciated. > > I am using R 3.0 on Mac OS X Mountain Lion 10.8.4, sessionInfo output: > > sessionInfo() > R version 3.0.1 (2013-05-16) > Platform: x86_64-apple-darwin10.8.0 (64-bit) > > locale: > [1] en_GB.UTF-8/C/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8 > > attached base packages: > [1] stats graphics grDevices utils datasets methods base > > other attached packages: > [1] inline_0.3.12 RcppArmadillo_0.3.900.0 Rcpp_0.10.3 > BDgraph_2.6 huge_1.2.4 MASS_7.3-26 > igraph_0.6.5-2 > [8] Matrix_1.0-12 lattice_0.20-15 > > loaded via a namespace (and not attached): > [1] grid_3.0.1 tools_3.0.1 > > > I have the following in a source file (somefile.R): > library(Rcpp) > library(inline) > library(RcppArmadillo) > > rowSumsRcppArmadilloFunction <- ' > arma::rowvec rowSumsRcppArmadillo(NumericMatrix x){ > arma::mat X = arma::mat(x.begin(), x.nrow(), x.ncol(), false); > return arma::sum(X, 1); > }' > > rowSumsRcppArmadillo <- cxxfunction(signature(), > plugin="Rcpp", > incl=rowSumsRcppArmadilloFunction, > body=' > return Rcpp::wrap(rowSumsRcppArmadillo()); > ') > > > If I try to execute this in R console with the source command, I get: > > > source("/Users/me/Desktop/R/somefile.R") > file29967eb06d23.cpp:20: error: ?arma? has not been declared > file29967eb06d23.cpp:20: error: expected constructor, destructor, or type > conversion before ?rowSumsRcppArmadillo? > file29967eb06d23.cpp: In function ?SEXPREC* file29967eb06d23()?: > file29967eb06d23.cpp:35: error: ?rowSumsRcppArmadillo? was not declared in > this scope > make: *** [file29967eb06d23.o] Error 1 > > ERROR(s) during compilation: source code errors or compiler configuration > errors! > > Program source: > 1: > 2: // includes from the plugin > 3: > 4: #include <Rcpp.h> > 5: > 6: > 7: #ifndef BEGIN_RCPP > 8: #define BEGIN_RCPP > 9: #endif > 10: > 11: #ifndef END_RCPP > 12: #define END_RCPP > 13: #endif > 14: > 15: using namespace Rcpp; > 16: > 17: > 18: // user includes > 19: > 20: arma::rowvec rowSumsRcppArmadillo(NumericMatrix x){ > 21: arma::mat X = arma::mat(x.begin(), x.nrow(), x.ncol(), false); > 22: return arma::sum(X, 1); > 23: } > 24: > 25: // declarations > 26: extern "C" { > 27: SEXP file29967eb06d23( ) ; > 28: } > 29: > 30: // definition > 31: > 32: SEXP file29967eb06d23( ){ > 33: BEGIN_RCPP > 34: > 35: return Rcpp::wrap(rowSumsRcppArmadillo()); > 36: > 37: END_RCPP > 38: } > 39: > 40: > Error in compileCode(f, code, language = language, verbose = verbose) : > Compilation ERROR, function(s)/method(s) not created! > file29967eb06d23.cpp:20: error: ?arma? has not been declared > file29967eb06d23.cpp:20: error: expected constructor, destructor, or type > conversion before ?rowSumsRcppArmadillo? > file29967eb06d23.cpp: In function ?SEXPREC* file29967eb06d23()?: > file29967eb06d23.cpp:35: error: ?rowSumsRcppArmadillo? was not declared in > this scope > make: *** [file29967eb06d23.o] Error 1 > In addition: Warning message: > running command '/Library/Frameworks/R.framework/Resources/bin/R CMD SHLIB > file29967eb06d23.cpp 2> file29967eb06d23.cpp.err.txt' had status 1 > > I added these: > 20: #include <RcppArmadillo.h> > 21: // [[Rcpp::depends(RcppArmadillo)]] > 22: > 23: // [[Rcpp::export]] > 24: > 25: arma::rowvec rowSumsRcppArmadillo(NumericMatrix x){ > 26: arma::mat X = arma::mat(x.begin(), x.nrow(), x.ncol(), false); > 27: return arma::sum(X, 1); > 28: } > > But then I just get this error: > Error in compileCode(f, code, language = language, verbose = verbose) : > Compilation ERROR, function(s)/method(s) not created! > file77e03dcff275.cpp:20:27: error: RcppArmadillo.h: No such file or > directory > file77e03dcff275.cpp:25: error: ?arma? has not been declared > file77e03dcff275.cpp:25: error: expected constructor, destructor, or type > conversion before ?rowSumsRcppArmadillo? > file77e03dcff275.cpp: In function ?SEXPREC* file77e03dcff275()?: > file77e03dcff275.cpp:40: error: ?rowSumsRcppArmadillo? was not declared in > this scope > make: *** [file77e03dcff275.o] Error 1 > In addition: Warning message: > running command '/Library/Frameworks/R.framework/Resources/bin/R CMD SHLIB > file77e03dcff275.cpp 2> file77e03dcff275.cpp.err.txt' had status 1 > > > > So, I thought I'd try compilng it as a package, but when I try to call the > package in R, I get errors like: > Error in sourceCpp("./R/somefile.R") : > Error 1 occurred building shared library. > > WARNING: The tools required to build C++ code for R were not found. > > Please install Command Line Tools for XCode (or equivalent). > > ld: warning: directory not found for option > '-L/usr/local/lib/gcc/i686-apple-darwin8/4.2.3/x86_64' > ld: warning: directory not found for option '-L/usr/local/lib/x86_64' > ld: warning: directory not found for option > '-L/usr/local/lib/gcc/i686-apple-darwin8/4.2.3' > ld: library not found for -lgfortran > collect2: ld returned 1 exit status > make: *** [sourceCpp_13326.so] Error 1 > > > The XCode command line tools *are* installed - I'm an iOS developer so I > always make sure that they are there: > > John-MBPR:BDGraphSource johnswan$ which llvm-g++ > /usr/bin/llvm-g++ > John-MBPR:BDGraphSource johnswan$ llvm-g++ --version > i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build > 5658) (LLVM build 2336.11.00) > Copyright (C) 2007 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > > > Can anyone help? > > Thanks > John > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: < > http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20130626/f34959cc/attachment-0001.html > > > > ------------------------------ >
_______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel