[Rcpp-devel] Package compilation error after a Mac update (related to the use of module and .constructor<const Rcpp::NumericVector &, int>()
Dirk Eddelbuettel
edd at debian.org
Wed May 8 16:19:17 CEST 2019
On 8 May 2019 at 09:43, Simon Urbanek wrote:
| It fails for me on Linux as well:
[...]
| [Ubuntu 18.04.1 LTS; clang 7.0.0-3~ubuntu0.18.04.1]
I can confirm that on Ubuntu 18.10 if I uncomment / reset these in ~/.R/Makevars:
CXX=ccache clang++
CXX11=ccache clang++
CC=ccache clang
SHLIB_CXXLD=clang
CXXFLAGS=-Wall -O3
Yet it also works as soon as remove the (understandable, from a pure C++
viewpoint) reference semantic (which with SEXP object is a lie anyway).
R> Rcpp::sourceCpp("/tmp/robin.cpp", verbose=TRUE, rebuild=TRUE)
Generated extern "C" functions
--------------------------------------------------------
#include <Rcpp.h>
Generated R functions
-------------------------------------------------------
`.sourceCpp_1_DLLInfo` <- dyn.load('/tmp/Rtmp6RAHjE/sourceCpp-x86_64-pc-linux-gnu-1.0.1.2/sourcecpp_314b38b4e773/sourceCpp_6.so')
library(Rcpp)
populate( Rcpp::Module("MyModel",`.sourceCpp_1_DLLInfo`), environment() )
rm(`.sourceCpp_1_DLLInfo`)
Building shared library
--------------------------------------------------------
DIR: /tmp/Rtmp6RAHjE/sourceCpp-x86_64-pc-linux-gnu-1.0.1.2/sourcecpp_314b38b4e773
/usr/lib/R/bin/R CMD SHLIB -o 'sourceCpp_6.so' --preclean 'robin.cpp'
ccache clang++ -I"/usr/share/R/include" -DNDEBUG -I"/usr/local/lib/R/site-library/Rcpp/include" -I"/tmp" -fpic -Wall -O3 -c robin.cpp -o robin.o
clang -Wl,-S -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o sourceCpp_6.so robin.o -L/usr/lib/R/lib -lR
R>
Repaired code (which whitespace and identation to my and Emacs's liking)
below.
Dirk
-----------------------------------------------------------------------------
#include <Rcpp.h>
using namespace Rcpp;
class MyModel {
public:
double a;
~MyModel();
MyModel();
MyModel(const Rcpp::NumericVector ModelData, int temp);
};
RCPP_EXPOSED_CLASS(MyModel)
MyModel::~MyModel() {}
MyModel::MyModel() : a(0) {}
MyModel::MyModel(const Rcpp::NumericVector ModelData, int temp) : a(0) {}
RCPP_MODULE(MyModel) {
Rcpp::class_<MyModel>("MyModel")
.constructor()
.constructor<const Rcpp::NumericVector, int>()
;
}
-----------------------------------------------------------------------------
--
http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
More information about the Rcpp-devel
mailing list