On 1 March 2016 at 10:29, Philippe Huber wrote: | Hi, | | I am starting to use Rcpp and got into some issues with basic examples. | | I am trying to run this: | | #include <Rcpp.h> | | using namespace Rcpp; | | // [[Rcpp::export]] | NumericVector timesTwo(NumericVector x) { | return x * 2; | } | | It works fine when I use it like: | > evalCpp(timesTwo(2)) | [1] 4 | | But as soon as I use a vector, I get some weird error message: | | > v=as.vector(c(2,2)) | > evalCpp(timesTwo(v)) | g++ -m64 -I"C:/PROGRA~1/R/R-32~1.3/include" -DNDEBUG -I"C:/Users/Hubert/ | Documents/R/win-library/3.2/Rcpp/include" -I"C:/Users/Hubert/AppData/Local/Temp | /RtmpaujML3" -I"d:/RCompile/r-compiling/local/local323/include" -O2 -Wall | -mtune=core2 -c file33c329d4fd2.cpp -o file33c329d4fd2.o | file33c329d4fd2.cpp: In function 'SEXPREC* get_value()': | file33c329d4fd2.cpp:7:6: error: redefinition of 'SEXPREC* get_value()' | file33c329d4fd2.cpp:6:6: error: 'SEXPREC* get_value()' previously defined here | make: *** [file33c329d4fd2.o] Error 1 | Warning message: | l'exécution de la commande 'make -f "C:/PROGRA~1/R/R-32~1.3/etc/x64/Makeconf" | -f "C:/PROGRA~1/R/R-32~1.3/share/make/winshlib.mk" SHLIB_LDFLAGS='$ | (SHLIB_CXXLDFLAGS)' SHLIB_LD='$(SHLIB_CXXLD)' SHLIB="sourceCpp_10.dll" WIN=64 | TCLBIN=64 OBJECTS="file33c329d4fd2.o"' renvoie un statut 2 | Error in sourceCpp(code = code, env = env, rebuild = rebuild, showOutput = | showOutput, : | Error 1 occurred building shared library. | | I tried to find a solution but got nothing. | | Can someone please help me?
help(evalCpp) tells you "Evaluates a C++ expression" which is correct. The canonical example is something like evalCpp("2 + 2") What you want here is sourceCpp() to source and run a file. Please see the vignette 'Rcpp Attribute' for countless examples. You can, as in the augmented example below, even include R code to be run after the build: R> sourceCpp("/tmp/sourceCppEx.cpp") R> timesTwo(21) [1] 42 R> timesTwo(c(1,3,5)) [1] 2 6 10 R> As you can see, works as expected. Dirk ------------- example with included R snippet below ------------------------- #include <Rcpp.h> using namespace Rcpp; // [[Rcpp::export]] NumericVector timesTwo(NumericVector x) { return x * 2; } /***R timesTwo(21) timesTwo(c(1,3,5)) */ ----------------------------------------------------------------------------- -- http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org _______________________________________________ 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