I think the problem was because the user's module was not loaded in zzz.R file, and after I added my own module name manually. It works !. However, I would like to know what is the correct way to do it. When I created the package, I provided the c++ file of my own as below, is there anyway the custom module can be added after creating the skeleton package if I provided a source cpp file. Also if there are more classes and modules in different .cpp files, should I just have to manually add each of them into the zzz.R file ?
> library(Rcpp) > Rcpp.package.skeleton(name="testModule1", cpp_files="./test_module.cpp", module=TRUE) Creating directories ... Creating DESCRIPTION ... Creating NAMESPACE ... Creating Read-and-delete-me ... Saving functions and data ... Making help files ... Done. Further steps are described in './testModule1/Read-and-delete-me'. Adding Rcpp settings >> added RcppModules: yada, stdVector, NumEx >> added Imports: Rcpp >> added LinkingTo: Rcpp >> added useDynLib directive to NAMESPACE >> added importFrom(Rcpp, loadModule) directive to NAMESPACE >> added importFrom(Rcpp, evalCpp) directive to NAMESPACE >> copied /people/d3j508/Wyoming/test_module.cpp to src directory >> added example src file using Rcpp attributes >> compiled Rcpp attributes >> added Rd file for rcpp_hello_world >> copied the example module file Thanks a lot. Chaomei ---------- Forwarded message ---------- From: Chaomei Lo <chaome...@gmail.com> Date: Tue, Jul 1, 2014 at 11:29 PM Subject: package contains overloaded methods in module To: rcpp-devel@lists.r-forge.r-project.org I use Romain's example as follows (after /// line). It works fine with the sourceCpp(..). However, with the package I created, it loaded fine but I got this error below when I instantiate the class. -Thanks for help. > library("testModule", lib.loc="/people/me/.Rlibs") > r <- new( Randomizer ) Error in .getClassFromCache(Class, where) : object 'Randomizer' not found //////////////////////////////////////////////////////// #include <Rcpp.h> using namespace Rcpp; class Randomizer { public: Randomizer(){} NumericVector get( int n ){ RNGScope scope ; return runif( n, 0.0, 1.0 ); } NumericVector get( int n, double min ){ RNGScope scope ; return runif( n, min, 1.0 ); } NumericVector get( int n, double min, double max ){ RNGScope scope ; return runif( n, min, max ); } } ; RCPP_MODULE(mod){ // helping the compiler disambiguate things NumericVector (Randomizer::*get_1)(int) = &Randomizer::get ; NumericVector (Randomizer::*get_2)(int,double) = &Randomizer::get ; NumericVector (Randomizer::*get_3)(int,double,double) = &Randomizer::get ; class_<Randomizer>( "Randomizer" ) .default_constructor() .method( "get" , get_1 ) .method( "get" , get_2 ) .method( "get" , get_3 ) ; }
_______________________________________________ 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