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"

the problem is when we call this function:

antsImageRead <- function( filename , dimension , pixeltype = "float" )
{
    rval <- (.Call("antsImageRead", filename, pixeltype, dimension))
    return(rval)
}

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)

etcetera ....

        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to