[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