Hi Gabor, This is because you copied the function signature and the last brace inside the inline code. This works:
library(inline) library(Rcpp) funIntro <- cxxfunction(signature(a = "numeric", b = "numeric"), body = ' Rcpp::NumericVector xa(a); Rcpp::NumericVector xb(b); int n_xa = xa.size(), n_xb = xb.size(); int nab = n_xa + n_xb - 1; Rcpp::NumericVector xab(nab); for (int i = 0; i < n_xa; i++) for (int j = 0; j < n_xb; j++) xab[i + j] += xa[i] * xb[j]; return xab; ', plugin="Rcpp") Romain Le mar 21/12/10 18:21, "Gabor Grothendieck" [email protected] a écrit: > I tried copying the example in the intro vignette > http://dirk.eddelbuettel.com/code/rcpp/Rcpp-introduction.pdf and get the following error. What's wrong? > > > library(inline) > > library(Rcpp) > > funIntro <- cxxfunction(signature(a = "numeric", > b = "numeric"), body = ' + RcppExport SEXP convolve3cpp(SEXP a, SEXP b) { > + Rcpp::NumericVector xa(a); > + Rcpp::NumericVector xb(b); > + int n_xa = xa.size(), n_xb = xb.size(); > + int nab = n_xa + n_xb - 1; > + Rcpp::NumericVector xab(nab); > + for (int i = 0; i < n_xa; i++) > + for (int j = 0; j < n_xb; j++) > + xab[i + j] += xa[i] * xb[j]; > + return xab; > + }', plugin="Rcpp") > file303dbfd.cpp: In function 'SEXPREC* file303dbfd(SEXPREC*, > SEXPREC*)': file303dbfd.cpp:31:1: error: expected unqualified-id before string > constant make: *** [file303dbfd.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: > 21: // declarations > 22: extern "C" { > 23: SEXP file303dbfd( SEXP a, SEXP b) ; > 24: } > 25: > 26: // definition > 27: > 28: SEXP file303dbfd( SEXP a, SEXP b ){ > 29: BEGIN_RCPP > 30: > 31: RcppExport SEXP convolve3cpp(SEXP a, SEXP b) { > 32: Rcpp::NumericVector xa(a); > 33: Rcpp::NumericVector xb(b); > 34: int n_xa = xa.size(), n_xb = xb.size(); > 35: int nab = n_xa + n_xb - 1; > 36: Rcpp::NumericVector xab(nab); > 37: for (int i = 0; i < n_xa; i++) > 38: for (int j = 0; j < n_xb; j++) > 39: xab[i + j] += xa[i] * xb[j]; > 40: return xab; > 41: } > 42: END_RCPP > 43: } > 44: > 45: > Error in compileCode(f, code, language = language, verbose = verbose) > : Compilation ERROR, function(s)/method(s) not created! > file303dbfd.cpp: In function 'SEXPREC* file303dbfd(SEXPREC*, > SEXPREC*)': > file303dbfd.cpp:31:1: error: expected unqualified-id before string > constant make: *** [file303dbfd.o] Error 1 > In addition: Warning message: > running command 'C:\PROGRA~1\R\R-212~1.X/bin/i386/R CMD SHLIB > file303dbfd.cpp 2> file303dbfd.cpp.err.txt' had status 1 > > > > > -- > Statistics & Software Consulting > GKX Group, GKX Associates Inc. > tel: 1-877-GKX-GROUP > email: ggrothendieck at gmail.com > _______________________________________________ > Rcpp-devel mailing list > [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rc > pp-devel > > _______________________________________________ Rcpp-devel mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
