[Rcpp-devel] Rcpp, bigmemory, package creation

Alex Ustian alex.l.ustian at gmail.com
Wed Apr 10 21:50:36 CEST 2013


Sorry for this double post, I am now correctly subscribed to the list!

Hello,

I'm having an issue building a package (named bigExplore) in RStudio which
uses both Rcpp and the MatrixAccessor from bigmemory.  All of my functions
seem to work fine when I was interactively developing them via sourceCpp.

The head of a sample .cpp file is:

// [[Rcpp::depends(bigmemory)]]
#include <Rcpp.h>
#include <bigmemory/MatrixAccessor.hpp>

// [[Rcpp::export]]
void cbindWriter(Rcpp::XPtr<BigMatrix> pA, Rcpp::XPtr<BigMatrix> pB,
Rcpp::XPtr<BigMatrix> pC)
...

My DESCRIPTION file contains:
Depends: bigmemory(>= 4.2.11), Rcpp(>= 0.10.3), RcppArmadillo(>= 0.3.800.1)
LinkingTo: bigmemory, Rcpp, RcppArmadillo

NAMESPACE:
useDynLib(bigExplore)
exportPattern("^[[:alpha:]]+")

and I made the two Makevars(.win) files for the src directory with:

PKG_LIBS = `$(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()"`
PKG_LIBS = $(shell "${R_HOME}/bin${R_ARCH_BIN}/Rscript.exe" -e
"Rcpp:::LdFlags()")

When I hit Build&Reload in RStudio I get the following message which
seems to be complaining about not being able to find the bigmemory
header infos

==> Rcpp::compileAttributes()

bigmemory >= 4.0 is a major revision since 3.1.2; please see package
biganalytics and http://www.bigmemory.org for more information.
==> Rcmd.exe INSTALL --no-multiarch bigExplore
* installing to library 'C:/Users/Alex/Documents/R/win-library/2.15'*
installing *source* package 'bigExplore' ...** libsg++ -m64
-I"C:/PROGRA~1/R/R-215~1.3/include" -DNDEBUG
-I"C:/Users/Alex/Documents/R/win-library/2.15/bigmemory/include"
-I"C:/Users/Alex/Documents/R/win-library/2.15/Rcpp/include"
-I"C:/Users/Alex/Documents/R/win-library/2.15/RcppArmadillo/include"
-I"d:/RCompile/CRANpkg/extralibs64/local/include"     -O2 -Wall
-mtune=core2 -c RcppExports.cpp -o RcppExports.oRcppExports.cpp:10:29:
error: 'BigMatrix' was not declared in this
scopeRcppExports.cpp:10:38: error: template argument 1 is
invalidRcppExports.cpp:10:38: error: template argument 2 is
invalidRcppExports.cpp:10:55: error: 'BigMatrix' was not declared in
this scope

and so on...


The RcppExports.cpp that is generated starts out like:

// This file was generated by Rcpp::compileAttributes
// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393

#include <RcppArmadillo.h>

#include <Rcpp.h>

using namespace Rcpp;

// cbindWriter
void cbindWriter(Rcpp::XPtr<BigMatrix> pA, Rcpp::XPtr<BigMatrix> pB,
Rcpp::XPtr<BigMatrix> pC);
...

which doesn't include any of the bigmemory header information.

I did see a recent similar question that was archived on Google
http://www.mail-archive.com/rcpp-devel@lists.r-forge.r-project.org/msg05232.html

but it appears that a solution was found by adding bigmemory into the
depends part of the DESCRIPTION file.  (which I have already done)

Thanks in advance for your patience and taking the time to look over my problem.

Alex Ustian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20130410/0e174b56/attachment.html>


More information about the Rcpp-devel mailing list