[Rcpp-devel] correct way of making custom as and wrap functions available to other packages

Simon Barthelmé simon.barthelme at gipsa-lab.fr
Fri Jul 17 16:32:40 CEST 2015


Dear list,

For a package I'm developing (https://github.com/dahtah/imager/) I had 
to write custom "as" and "wrap" functions for third-party classes. I'd 
like to make these wrappers accessible to other developers via inline 
C++ as well as LinkingTo directives (so that they can be used in other 
packages).
So far I've only managed the former: I have a header file in 
inst/include, called "wrappers.h", that contains the full 
implementations of my custom as and wrap functions. I've written a 
custom inline plugin and everything works fine. However, LinkingTo 
doesn't work: wrappers.h gets included in multiple object files and I 
get linking errors (the linker complains about multiple declarations of 
"as" and "wrap").
I understand RcppArmadillo manages to get around the problem but I can't 
figure out how. What's the correct way of doing this? Is there a way of 
making as and wrap inline functions so that it's safe to have 
header-only implementations?

Thanks!

Simon Barthelme



More information about the Rcpp-devel mailing list