[Rcpp-devel] How to export a .Call function in a closure?

Dirk Eddelbuettel edd at debian.org
Tue Aug 28 13:06:59 CEST 2012


On 27 August 2012 at 22:36, Peng Yu wrote:
| I have the following two functions which wrap a C++ function differently.
| 
| rcpp_hello_world=local({
|   sym=getNativeSymbolInfo('rcpp_hello_world', PACKAGE='mypkg')
|   function() .Call(sym, PACKAGE='mypkg')
| })
| 
| rcpp_hello_world1=function(){
|   .Call('rcpp_hello_world', PACKAGE='mypkg')
| }
| 
| However, the first one results in some error, when I try to install
| the R package. I guess the problem is that when the package is being
| installed, "mypkg" is not available yet. The solution might be to put
| some code in .onLoad or some code that is executed when the package is
| loaded (not at installation time). However, I don't find an example.
| Does anybody have any experience on how to have the first form of
| .Call in a package? Thanks!
| 
| Loading required package: Rcpp
| Error in FUN("rcpp_hello_world"[[1L]], ...) :
|   no such symbol rcpp_hello_world in package mypkg
| Calls: roxygenize ... eval -> eval -> getNativeSymbolInfo -> lapply -> FUN
| Execution halted

You posted two methods.  One of which works and is supported.  Why not use it?

Dirk

-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com  


More information about the Rcpp-devel mailing list