[Rcpp-devel] package .onLoad multiple modules
baptiste auguie
baptiste.auguie at googlemail.com
Mon May 30 00:29:47 CEST 2011
Hi,
On 30 May 2011 04:28, Dirk Eddelbuettel <edd at debian.org> wrote:
>
> On 29 May 2011 at 18:56, baptiste auguie wrote:
> | Dear list,
> |
> | [Disclaimer: I am not very familiar with Rcpp/C++, and probably
> | haven't followed all the relevant discussions on this list.]
> |
> | I'm trying to tidy up two packages on r-forge [*] before submitting
> | them to CRAN. In "cda/zzz.r", I have the following code,
> |
> | NAMESPACE <- environment()
> | cda <- new( "Module" )
> | cdatests <- new( "Module" )
> | cd <- new( "Module" )
> | linear <- new( "Module" )
> | array <- new( "Module" )
> |
> | .onLoad <- function(libname, pkgname){
> | unlockBinding( "cda" , NAMESPACE )
> | unlockBinding( "cdatests" , NAMESPACE )
> | unlockBinding( "cd" , NAMESPACE )
> | unlockBinding( "linear" , NAMESPACE )
> | assign( "cda", Module( "cda" ), NAMESPACE )
> | assign( "cdatests", Module( "cdatests" ), NAMESPACE )
> | assign( "cd", Module( "cd" ), NAMESPACE )
> | assign( "linear", Module( "linear" ), NAMESPACE )
> | lockBinding( "cda", NAMESPACE )
> | lockBinding( "cdatests", NAMESPACE )
> | lockBinding( "cd", NAMESPACE )
> | lockBinding( "linear", NAMESPACE )
> |
> | unlockBinding( "array" , NAMESPACE )
> | assign( "array", Module( "array" ), NAMESPACE )
> | lockBinding( "array", NAMESPACE )
> |
> | }
> |
> | It seems to work, but is there something I can/should do to make this
> | a wee cleaner?
>
> Have another look at the Rcpp-modules vignette, and/or the third set of
> slides ("Advanced Rcpp") from our class in April -- you no longer need the
> unlockBinding / lockBinding business as Romain internalized that. The
> skeleton-generated packages now just do this in zzz.R:
>
> .onLoad <- function(pkgname, libname){
> loadRcppModules()
> }
>
> using a 'RcppModules: cda, cdatests, cd, linear, array' declaration in
> DESCRIPTION.
Strange, this does not seem to work for me.
If I use the following zzz.r, (with RcppModules listed in DESCRIPTION)
.onLoad <- function(libname, pkgname){
loadRcppModules()
}
I get a segfault whenever I use a c++ function,
*** caught segfault ***
address 0x0, cause 'memory not mapped'
Traceback:
1: .External(list(name = "InternalFunction_invoke", address =
<pointer: 0x101407f30>, dll = list(name = "Rcpp", path =
"/Library/Frameworks/R.framework/Versions/2.13/Resources/library/Rcpp/libs/x86_64/Rcpp.so",
dynamicLookup = TRUE, handle = <pointer: 0x101441030>,
info = <pointer: 0x1002b3ed0>), numParameters = -1L), <pointer:
0x103011050>, ...)
2: circular_dichroism_spectrum(clust, gold, n = 1.33, N = 36, progress = FALSE)
3: onecluster()
Is there another step I'm missing?
Best regards,
baptiste
>
> The question Laurent raised the other day about spurious warnings from 'R CMD
> check' around this still stands though. Not yet sure what to do there...
>
> Cheers, Dirk
>
> --
> Gauss once played himself in a zero-sum game and won $50.
> -- #11 at http://www.gaussfacts.com
>
More information about the Rcpp-devel
mailing list