On 4 May 2012 at 00:07, Owe Jessen wrote: | I am running into a wall getting my system to work with rcpp and inline. | Following Dirk's advice on stackoverflow, I hope someone is able to help | me.
There is a dedicated mailing list for Rcpp: rcpp-devel. Please let us try to continue the discussion over there. Subscription is required as on some other R lists, so please subscribe before posting. In general, you need Rtools correctly set up. If and when you compile a basic R package (also containing C or C++ files) from sources, you should be fine. A decent 60+ page tutorial is available at: http://howtomakeanrpackage.pbworks.com/f/How_To_Make_An_R_Package-v1.14-01-11-10.pdf Once you have that sorted out, working with Rcpp and inline should "just work" as it does on other operating systems. | My steps were to install MinGW 32 bit first, then installing Rtools, I | disabled MinGW's entry in the PATH. What do you mean by "MinGW's path entry disabled" ? You need mingw. | I am trying to get the following code to work: | | library(Rcpp) | library(inline) | | body <- ' | NumericVector xx(x); | return wrap( std::accumulate( xx.begin(), xx.end(), 0.0));' | | add <- cxxfunction(signature(x = "numeric"), body, plugin = "Rcpp", | verbose=T) | | x <- 1 | y <- 2 | res <- add(c(x, y)) | res | | | I get the following error messages: | | >> setting environment variables: | PKG_LIBS = C:/Users/Owe/Documents/R/win-library/2.15/Rcpp/lib/x64/libRcpp.a | | >> LinkingTo : Rcpp | CLINK_CPPFLAGS = -I"C:/Users/Owe/Documents/R/win-library/2.15/Rcpp/include" | | >> 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 file10bc7da0783e( SEXP x) ; | 24 : } | 25 : | 26 : // definition | 27 : | 28 : SEXP file10bc7da0783e( SEXP x ){ | 29 : BEGIN_RCPP | 30 : | 31 : NumericVector xx(x); | 32 : return wrap( std::accumulate( xx.begin(), xx.end(), 0.0)); | 33 : END_RCPP | 34 : } | 35 : | 36 : | Compilation argument: | C:/R_curr/R_2_15_0/bin/x64/R CMD SHLIB file10bc7da0783e.cpp 2> file10bc7da0783e.cpp.err.txt | g++ -m64 -I"C:/R_curr/R_2_15_0/include" -DNDEBUG -I"C:/Users/Owe/Documents/R/win-library/2.15/Rcpp/include" -I"d:/RCompile/CRANpkg/extralibs64/local/include" -O2 -Wall -mtune=core2 -c file10bc7da0783e.cpp -o file10bc7da0783e.o Looks like compilation worked. | g++ -m64 -shared -s -static-libgcc -o file10bc7da0783e.dll tmp.def file10bc7da0783e.o C:/Users/Owe/Documents/R/win-library/2.15/Rcpp/lib/x64/libRcpp.a -Ld:/RCompile/CRANpkg/extralibs64/local/lib/x64 -Ld:/RCompile/CRANpkg/extralibs64/local/lib -LC:/R_curr/R_2_15_0/bin/x64 -lR | cygwin warning: | MS-DOS style path detected: C:/R_curr/R_2_15_0/etc/x64/Makeconf | Preferred POSIX equivalent is: /cygdrive/c/R_curr/R_2_15_0/etc/x64/Makeconf | CYGWIN environment variable option "nodosfilewarning" turns off this warning. | Consult the user's guide for more details about POSIX paths: | http://cygwin.com/cygwin-ug-net/using.html#using-pathnames That is just noise and can be ignored. The rest is bad: | Cannot export Rcpp::Vector<14>::update(): symbol not defined | Cannot export Rcpp::Vector<14>::~Vector(): symbol not defined | Cannot export Rcpp::Vector<14>::~Vector(): symbol not defined | Cannot export typeinfo for Rcpp::VectorBase<14, true, Rcpp::Vector<14> >: symbol not defined | Cannot export typeinfo for Rcpp::Vector<14>: symbol not defined | Cannot export typeinfo for Rcpp::traits::expands_to_logical__impl<14>: symbol not defined | Cannot export typeinfo for Rcpp::RObject: symbol not defined | Cannot export typeinfo for Rcpp::internal::eval_methods<14>: symbol not defined | Cannot export typeinfo for std::exception: symbol not defined | Cannot export typeinfo name for Rcpp::VectorBase<14, true, Rcpp::Vector<14> >: symbol not defined | Cannot export typeinfo name for Rcpp::Vector<14>: symbol not defined | Cannot export typeinfo name for Rcpp::traits::expands_to_logical__impl<14>: symbol not defined | Cannot export typeinfo name for Rcpp::RObject: symbol not defined | Cannot export typeinfo name for Rcpp::internal::eval_methods<14>: symbol not defined | Cannot export typeinfo name for std::exception: symbol not defined | Cannot export vtable for Rcpp::Vector<14>: symbol not defined | Cannot export _file10bc7da0783e: symbol not defined | file10bc7da0783e.o:file10bc7da0783e.cpp:(.text+0x1a4): undefined reference to `SEXPREC* Rcpp::internal::r_true_cast<14>(SEXPREC*)' | file10bc7da0783e.o:file10bc7da0783e.cpp:(.text+0x1c9): undefined reference to `Rcpp::RObject::setSEXP(SEXPREC*)' | file10bc7da0783e.o:file10bc7da0783e.cpp:(.text+0x244): undefined reference to `double* Rcpp::internal::r_vector_start<14, double>(SEXPREC*)' | file10bc7da0783e.o:file10bc7da0783e.cpp:(.text+0x27c): undefined reference to `Rcpp::RObject::~RObject()' | file10bc7da0783e.o:file10bc7da0783e.cpp:(.text+0x389): undefined reference to `Rcpp::RObject::~RObject()' | file10bc7da0783e.o:file10bc7da0783e.cpp:(.text+0x420): undefined reference to `forward_exception_to_r(std::exception const&)' | file10bc7da0783e.o:file10bc7da0783e.cpp:(.text$_ZN4Rcpp6VectorILi14EED1Ev[Rcpp::Vector<14>::~Vector()]+0x13): undefined reference to `Rcpp::RObject::~RObject()' | file10bc7da0783e.o:file10bc7da0783e.cpp:(.text$_ZN4Rcpp6VectorILi14EE6updateEv[Rcpp::Vector<14>::update()]+0xd): undefined reference to `double* Rcpp::internal::r_vector_start<14, double>(SEXPREC*)' | file10bc7da0783e.o:file10bc7da0783e.cpp:(.text$_ZN4Rcpp6VectorILi14EED0Ev[Rcpp::Vector<14>::~Vector()]+0x13): undefined reference to `Rcpp::RObject::~RObject()' | collect2: ld returned 1 exit status Linking failed. Something is wrong with your static Rcpp library. I cannot tell why this fails. You could check your package by submitting it to http://win-builder.r-project.org. If it builds there, your local setup is wrong. If it fails there, your package is wrong. Cheers, Dirk | 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 file10bc7da0783e( SEXP x) ; | 24: } | 25: | 26: // definition | 27: | 28: SEXP file10bc7da0783e( SEXP x ){ | 29: BEGIN_RCPP | 30: | 31: NumericVector xx(x); | 32: return wrap( std::accumulate( xx.begin(), xx.end(), 0.0)); | 33: END_RCPP | 34: } | 35: | 36: | | sessionInfo() provides the following data: | | | > sessionInfo() | R version 2.15.0 (2012-03-30) | Platform: x86_64-pc-mingw32/x64 (64-bit) | | locale: | [1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252 LC_MONETARY=German_Germany.1252 | [4] LC_NUMERIC=C LC_TIME=German_Germany.1252 | | attached base packages: | [1] stats graphics grDevices utils datasets methods base | | other attached packages: | [1] RcppExamples_0.1.3 RcppClassic_0.9.1 inline_0.3.8 Rcpp_0.9.10 | | loaded via a namespace (and not attached): | [1] tools_2.15.0 | | | | Thanks in advance | | | -- | Owe Jessen | http://privat.owejessen.de | | | | [[alternative HTML version deleted]] | | ______________________________________________ | R-devel@r-project.org mailing list | https://stat.ethz.ch/mailman/listinfo/r-devel -- R/Finance 2012 Conference on May 11 and 12, 2012 at UIC in Chicago, IL See agenda, registration details and more at http://www.RinFinance.com ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel