0
votes

I created RcppArmadillo package on windows (Win 7, 64 bit) using R 3.1.2 and the latest versions of Rcpp 0.11.3 and RcppArmadillo 0.4.600.0. Package compiles, installs, and runs fine. Afterwards i wrote some code to use BigMatrix from bigmemory package with my RcppArmadillo package. As it turns out bigmemory is not available for R 3.1.2 on windows. To use bigmemory i downgraded R to R 2.15.3 and got Rcpp 0.10.4 and RcppArmadillo 0.4.000.2 for it from CRAN. Now i can use bigmemory but i cannot get my RcppArmadillo package to compile. Basically, it barfs a long list of error messages starting with

C:/Program Files/R/R-2.15.3/library/RcppArmadillo/include/RcppArmadilloForward.h:99:33: error: 'ConstReferenceInputParameter' is not a template

The errors look like a version incompatibility issue RcppArmadillo "ReferenceInputParameter is not a template" for which Dirk recommended installing Rcpp 0.10.5 from source. So i found tarball of Rcpp 0.10.5 and installed it manually. Problem is that i still get a ton of different error messages

g++ -m32 -I"C:/PROGRA~1/R/R-215~1.3/include" -DNDEBUG    -I"C:/Program Files/R/R-2.15.3/library/Rcpp/include" -I"C:/Program Files/R/R-2.15.3/library/RcppArmadillo/include" -I"d:/RCompile/CRANpkg/extralibs64/local/include"     -O2 -Wall  -mtune=core2 -c RcppExports.cpp -o RcppExports.o
g++ -m32 -I"C:/PROGRA~1/R/R-215~1.3/include" -DNDEBUG    -I"C:/Program Files/R/R-2.15.3/library/Rcpp/include" -I"C:/Program Files/R/R-2.15.3/library/RcppArmadillo/include" -I"d:/RCompile/CRANpkg/extralibs64/local/include"     -O2 -Wall  -mtune=core2 -c rcpparma_hello_world.cpp -o rcpparma_hello_world.o
g++ -m32 -shared -s -static-libgcc -o rcppArma.dll tmp.def RcppExports.o rcpparma_hello_world.o -LC:/PROGRA~1/R/R-215~1.3/bin/i386 -lRlapack -LC:/PROGRA~1/R/R-215~1.3/bin/i386 -lRblas -lgfortran -Ld:/RCompile/CRANpkg/extralibs64/local/lib/i386 -Ld:/RCompile/CRANpkg/extralibs64/local/lib -LC:/PROGRA~1/R/R-215~1.3/bin/i386 -lR
RcppExports.o:RcppExports.cpp:(.text+0x82): undefined reference to `Rcpp::internal::enterRNGScope()'
RcppExports.o:RcppExports.cpp:(.text+0xa7): undefined reference to `SEXPREC*    Rcpp::internal::r_true_cast<14>(SEXPREC*)'
RcppExports.o:RcppExports.cpp:(.text+0xc9): undefined reference to `Rcpp::RObject::RObject(SEXPREC*)'
RcppExports.o:RcppExports.cpp:(.text+0xf5): undefined reference to `Rcpp::traits::storage_type<14>::type* Rcpp::internal::r_vector_start<14>(SEXPREC*)'
RcppExports.o:RcppExports.cpp:(.text+0x199): undefined reference to `Rcpp::traits::storage_type<14>::type* Rcpp::internal::r_vector_start<14>(SEXPREC*)'

I suspect it is still version incompatibility issue, but i have no idea how to match Rcpp version and RcppArmadillo version. Is there a compatibility table, could someone give a suggestion?

2

2 Answers

1
votes

All CRAN packages have an Archive/ subdirectory. By picking the date of the last available bigmemory package you can find that corresponding package for Rcpp and RcppArmadillo: the most recent release prior to that particular bigmemory release. You can then download and install these (provided you are set up to install from source, which I presume you are, given the context).

There is some ongoing work by some folks giving 'snap-shotting' ability but I am not aware of a high-level helper function you could use right now.

Edit: What you should probably do here, though, is to take a recent bigmemory source package and install from source.

1
votes

The checkpoint package can create a local R library that contains packages as of a given date.

There is a tutorial [here].