[R] Calling C routine in anther package in C code (R_RegisterCCallable)

Douglas Bates bates at stat.wisc.edu
Fri Jun 1 22:07:01 CEST 2007


It looks like your C++ compiler is mangling the name
R_RegisterCCallable.  Move the

extern "C"

before the

#include <R_ext/Rdynload.h>

On 6/1/07, Alex Chen <ychen at insightful.com> wrote:
> Hi,
>
>
>
> I want to make use of some C routines from other packages to write extensions
> in C.
>
>
>
> In "Writing R Extensions", it says there is an experimental interface to
> support this in (or from ?) R 2.4.0.
>
>
>
> I had a dummy library containing src/dummy.cpp and R/zzz.R:
>
>
>
> ====== src/dummy.cpp ====
>
> #include <R.h>
>
> #include <Rinternals.h>
>
> #include <R_ext/Rdynload.h>
>
>
>
> extern "C"
>
> {
>
>   void dummy(int *a, int *b)
>
>   {
>
>     printf("dummy\n");
>
>   }
>
> }
>
>
>
> void R_init_dummy(DllInfo *dll)
>
> {
>
>   R_RegisterCCallable("dummy", "dummy", (DL_FUNC)dummy);
>
> }
>
>
>
> ====== R/zzz.R =========
>
>
>
> .First.lib <- function(lib, pkg) {
>
>   library.dynam("dummy", pkg, lib)
>
> }
>
>
>
> ======================
>
>
>
> I can compile this using R 2.5.0 under Linux.
>
>
>
> But I got the following error when I tried to load the library
>
>
>
> >library(dummy):
>
> Error in dyn.load(x, as.logical(local), as.logical(now)) :
>
>         unable to load shared library
> '/homes/ychen/Rlibs/dummy/libs/dummy.so':
>
>   /homes/ychen/Rlibs/dummy/libs/dummy.so: undefined symbol:
> _Z19R_RegisterCCallablePcS_PFPvvE
>
> Error in library(dummy) : .First.lib failed for 'dummy'
>
>
>
> Can anyone help me out?
>
>
>
> Thanks!
>
>
>
> Alex
>
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list