On 20-08-18 15:35, Iñaki Ucar wrote:
El lun., 20 ago. 2018 a las 9:01, Jan van der Laan
(<rh...@eoos.dds.nl>) escribió:


[SNIP]

      ========== pkg1/src/construct.cpp ================
      #include "../inst/include/pkg1.h"

      // [[Rcpp::export]]
      RcppExport SEXP new_foobar(int i) {
        BEGIN_RCPP
        FooBar<int>* x = new FooBar<int>(i);
        return Rcpp::XPtr<Foo>(x, true);
        END_RCPP
      }

Note that RcppExport SEXP should be just SEXP. BEGIN_RCPP and END_RCPP
should be dropped too.

You are right. Thanks. Mixing up old and new code.

[SNIP]



pkg2 compiles a shared library using pkg1's headers, but it does not
link against libpkg1.so (in general, this is not possible in R). So
both libpkg2.so and libpkg1.so define two copies of the same types,
Foo and FooBar. pkg2 allocates FooBar from libpkg1.so and then
dynamically casts it as FooBar from libpkg2.so. This is why clang
complains. It has to do with how RTTI comparisons are done across
dynamic objects (see, e.g.,
https://whatofhow.wordpress.com/2015/03/17/odr-rtti-dso/).

This is roughly what I suspected. However, if I understand that article correctly problems should only occur with clang (which I am using; didn't mention that) and not with g++. However, the problems also occur with g++ (https://www.stats.ox.ac.uk/pub/bdr/memtests/gcc-UBSAN/ldat/ldat-Ex.Rout).



I'd say that these errors can be safely ignored, because types are
exactly the same. Anyway, shouldn't it be easier to export get_foobar
in pkg1?

Don't know how easy it is to convince the CRAN members to ignore the warnings. Of course, in this simple case, it is easier to define get_foobar in pkg1, but in the general case, for performance reasons, I would like to be able to access FooBar from other packages from c++ code.


Thanks for the response.

Jan








Iñaki


So, help!?

Jan





_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel



_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to