[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 17:12:41 CEST 2015


Hi Kevin

Thanks for your answer. I've tried declaring them as inline but the 
compiler (clang, haven't tried gcc) issues a warning saying it's going 
to ignore the inline statement. I'm assuming this is because the 
declaration is actually a template specialisation but I haven't found a 
definitive answer.
If I separate the declaration from the definition, the linker now 
complains as and wrap are missing. Using the interface:: attribute 
doesn't seem to help either.

Best

Simon

Le 17/07/2015 16:56, Kevin Thornton a écrit :
> A good guess is that the as/wrap definitions in wrappers.h are the 
> culprit 
> (https://github.com/dahtah/imager/blob/master/inst/include/wrappers.h).  Try 
> declaring them as inline, or separating the definition from the 
> declaration.
>
> —Kevin
>
>> On Jul 17, 2015, at 7:32 AM, Simon Barthelmé 
>> <simon.barthelme at gipsa-lab.fr <mailto:simon.barthelme at gipsa-lab.fr>> 
>> wrote:
>>
>> 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
>>
>> _______________________________________________
>> Rcpp-devel mailing list
>> Rcpp-devel at lists.r-forge.r-project.org 
>> <mailto:Rcpp-devel at lists.r-forge.r-project.org>
>> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20150717/cf03ea9b/attachment.html>


More information about the Rcpp-devel mailing list