I have followed the Rcpp developer's recommendation that a package
greatly simplifies using RCPP_MODULE wrappering. Unfortunately, I'm
having difficulty building and checking even a simple package
containing an Rcpp module. I have read previous posts on this topic
but I did not find anything helpful. I must be overlooking something
very simple, please help.

The package check fails with this error:
** testing if installed package can be loaded
Error : .onLoad failed in loadNamespace() for 'mod', details:
  call: value[[3L]](cond)
  error: failed to load module mod from package mod
no binding for "norm"

The package skeleton was created with Rcpp.package.skeleton() to which
I added a C++ source file and then edited files according to the
'Read-and-delete-me' file.

Here are my build and check steps:

$ R CMD build mod
* checking for file `mod/DESCRIPTION' ... OK
* preparing `mod':
* checking DESCRIPTION meta-information ... OK
* cleaning src
* checking for LF line-endings in source and make files
* checking for empty or unneeded directories
* building `mod_1.0.tar.gz'

$ R CMD check mod
* using log directory '/home/simone/R/Rcpp/module/mod.Rcheck'
* using R version 2.13.1 (2011-07-08)
* using platform: x86_64-pc-linux-gnu (64-bit)
* using session charset: UTF-8
* checking for file 'mod/DESCRIPTION' ... OK
* checking extension type ... Package
* this is package 'mod' version '1.0'
* checking package name space information ... OK
* checking package dependencies ... OK
* checking if this is a source package ... OK
* checking for executable files ... OK
* checking whether package 'mod' can be installed ... ERROR
Installation failed.

The package skeleton was created with Rcpp.package.skeleton().

Here is the module directory structure:
$ /bin/ls -R mod
mod:
DESCRIPTION  man  NAMESPACE  R  Read-and-delete-me  src

mod/man:
mod-package.Rd

mod/R:
zzz.R

mod/src:
Makevars  Makevars.win  rcpp_module.cpp

Here are the key files:

$ cat mod/NAMESPACE
useDynLib(mod)
exportPattern("^[[:alpha:]]+")
import( Rcpp )

$ cat mod/R/zzz.R

.onLoad <- function(libname, pkgname) {
    require("methods", character=TRUE, quietly=FALSE)
    loadRcppModules()
}

$ cat mod/src/rcpp_module.cpp
#include <math.h>
#include <Rcpp.h>

double norm( double x, double y ) {
  return sqrt( x*x + y*y );
}

RCPP_MODULE(mod) {
  using namespace Rcpp;
  function( "norm", &norm );
}
_______________________________________________
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