From murdoch.duncan at gmail.com  Wed Apr 10 21:53:59 2013
From: murdoch.duncan at gmail.com (Duncan Murdoch)
Date: Wed, 10 Apr 2013 15:53:59 -0400
Subject: [Rd] question re: error message --- package error:
 "functionName" not resolved from current namespace
In-Reply-To: <CABWzF4XiwH5=U=Bx9yb4V=Cwu+K38QmEONJ0mMVcwYycdXKyjw@mail.gmail.com>
References: <CABWzF4XhbD_LGy0UeVSiLd-cHbbvH9z+QTMrRQD1_PMvZv-=6w@mail.gmail.com>
	<CC350C70-2837-4160-B8EF-F391188D4667@r-project.org>
	<CABWzF4XiwH5=U=Bx9yb4V=Cwu+K38QmEONJ0mMVcwYycdXKyjw@mail.gmail.com>
Message-ID: <5165C357.2000204@gmail.com>

On 10/04/2013 2:25 PM, brian avants wrote:
> hi simon
>
> thank you for your questions ---- answers here:
>
> I won't answer your question directly but some suggestions:
> > a) does adding PACKAGE="ANTsR" to .Call change anything? (It should really
> > be there if you are using strings as names)
> >
>
> this does change things .... for instance, this works:
>
> library(ANTsR)
> filename<-getANTsRData('r16')
> .Call("antsImageRead", filename,'double',2) #  Succeeds!
> .Call("antsImageRead", filename,'double',2,PACKAGE=ANTsR) #  Fails!
> # Error in .Call("antsImageRead", filename, "double", 2, PACKAGE = "ANTsR")
> :
> #  "antsImageRead" not available for .Call() for package "ANTsR"

That makes it look as though it is finding that entry point somewhere 
other than in the ANTsR.{so|dll} file installed with the package.
>
> the problem is when we call this function:
>
> antsImageRead <- function( filename , dimension , pixeltype = "float" )
> {
>      rval <- (.Call("antsImageRead", filename, pixeltype, dimension))
>      return(rval)
> }

That's the one where you should be using the PACKAGE declaration.

>
> the we get the error   antsImageRead not resolved from current namespace ,
> e.g.:
>
> > antsImageRead(filename,2)
> Error in .Call("antsImageRead", filename, pixeltype, dimension) :
>    "antsImageRead" not resolved from current namespace (ANTsR)
> >
>
>
> b) you may want to consider use the more efficient registration - either
> > explicit or in NAMESPACE - so in your case you could use
> > NAMESPACE: useDynLib(ANTsR, antsImageRead, ...)
> > foo.R: .Call(antsImageRead, ...)
> >
>
> yes - we have all of our shared libraries registered in the NAMESPACE file
> e.g.
>
> useDynLib(libRantsImageRead)

But this doesn't register the entry point.  List it explicitly, and it 
will create an object called antsImageRead in the package namespace that 
has entry point information.

Duncan Murdoch
>
> etcetera ....
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] question re: error message --- package error: "functionName" not resolved from current namespace
Duncan Murdoch