<div dir="ltr">Hi, Fabio,<div><br></div><div>I think it will be better if you can open a repo on github and upload your package.</div><div><br></div><div>Besides, I can give you a simple example I wrote before [1].</div><div><br></div><div>Best wishes,</div><div><br></div><div>KK</div><div><br></div><div>[1] <a href="https://github.com/thirdwing/RcppDL/blob/master/src/util.h">https://github.com/thirdwing/RcppDL/blob/master/src/util.h</a></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 21, 2015 at 11:17 AM, Fabio Tordini <span dir="ltr"><<a href="mailto:tordini@di.unito.it" target="_blank">tordini@di.unito.it</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<br>
while extending Rcpp with my C++ classes, I received hundreds of " 'wrap' is not a template function" and " 'as' is not a template function" errors when compiling. Beside this, I get an impressive list of errors referring to RcppGSL files.<br>
<br>
The library from which my classes come from makes use GSL (on C++ side), thus I link RcppGSL to my package.<br>
<br>
Here is my extending for one class:<br>
#ifndef SAMDATA_HPP_<br>
#define SAMDATA_HPP_<br>
<br>
class SamData;<br>
<br>
#include <RcppCommon.h><br>
<br>
namespace Rcpp {<br>
    template<> SEXP wrap(const SamData &s);<br>
    template<> SamData as( SEXP s ) ;<br>
}<br>
<br>
#include <Rcpp.h><br>
<br>
#include "common.hpp"<br>
<br>
class SamData {<br>
<br>
    // class implementation<br>
};<br>
<br>
namespace Rcpp {<br>
<br>
template<> SEXP wrap(const SamData &s) {<br>
   return Rcpp::List::create( Rcpp::Named("Chr1") = s.getChr1(),<br>
                              Rcpp::Named("Chr2") = s.getChr2(),<br>
                              Rcpp::Named("Seq1") = s.getSeq(),<br>
                              Rcpp::Named("HS1")  = s.getHS1(),<br>
                              Rcpp::Named("HS2")  = s.getHS2(),<br>
                              Rcpp::Named("Id")   = s.getId(),<br>
                              Rcpp::Named("Start1") = s.getStart1(),<br>
                              Rcpp::Named("Start2") = s.getStart2() );<br>
}<br>
<br>
template <> SamData as( SEXP s ) {<br>
    Rcpp::List samL(s);<br>
    SamData sam;<br>
    sam.setChr1( Rcpp::as<std::string>(samL["Chr1"]) );<br>
    sam.setChr2( Rcpp::as<std::string>(samL["Chr2"]) );<br>
    sam.setSeq( Rcpp::as<std::string>(samL["Seq1"]) );<br>
    sam.setHS1( Rcpp::as<size_t>(samL["HS1"]) );<br>
    sam.setHS2( Rcpp::as<size_t>(samL["HS2"]) );<br>
    sam.setStart1( Rcpp::as<long>( samL["Start1"]) );<br>
    sam.setStart2( Rcpp::as<long>( samL["Start2"]) );<br>
    sam.setId( Rcpp::as<long>( samL["Id"]) );<br>
<br>
    return sam;<br>
}<br>
<br>
}<br>
#endif /* SAMDATA_HPP_ */<br>
<br>
<br>
The Rcpp package worked just fine before I started using wrap and as. Also, this very same code runs fine on a separate sample Rcpp project, where I omit the GSL (and RcppGSL) dependency (I could attach it but I don't know if it is allowed).<br>
<br>
Sorry if this question might sound silly (and it does to me), but is there any known issue or incompatibility with RcppGSL and wrap/as?<br>
<br>
<br>
Thanks,<br>
Fabio<br>
<br>
<br>
_______________________________________________<br>
Rcpp-devel mailing list<br>
<a href="mailto:Rcpp-devel@lists.r-forge.r-project.org" target="_blank">Rcpp-devel@lists.r-forge.r-project.org</a><br>
<a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel" target="_blank">https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Qiang Kou<div><a href="mailto:qkou@umail.iu.edu" target="_blank">qkou@umail.iu.edu</a><br><div>School of Informatics and Computing, Indiana University</div><div><br></div></div></div></div>
</div>