[Rd] Using R_MakeExternalPtr
simon.urbanek at r-project.org
Wed Jul 25 17:54:14 CEST 2007
I suspect that you're leaving out some important details - please
include your R code for inspection as the C++ code below seems ok
(although you may want to show us the declarations as well). Also you
may want to look into this with a debugger in case the segfault is
actually in your C++ code due to some memory management issue.
On Jul 25, 2007, at 11:35 AM, Jonathan Zhou wrote:
> Hi all,
> I've been writing a package and I've run into a problem that I'm
> unsure how
> to solve. I am looking to pass a C++ class object to R so that it
> may be
> passed back to another C++ function later on to be used. I'm quite
> new to R
> and this is my first time writing a package, so I hope you can bear
> with me.
> The following is how I create the class and use R_MakeExternalPtr
> (). This
> occurs in a function called "soamInit":
> Session* sesPtr = conPtr->createSession(attributes);
> void* temp = session;
> SEXP out = R_MakeExternalPtr(temp, R_NilValue, R_NilValue);
> return out;
> The following is how I try to retrieve the class object in a
> different C++
> function called "soamSubmit", where sesCon is the externalPtr :
> void* temp = R_ExternalPtrAddr(sesCon);
> Session* sesPtr = reinterpret_cast<Session*>(temp);
> The error I get when trying to run the R function is :
> *** caught segfault ***
> address 0x3, cause 'memory not mapped'
> 1: .Call("soamSubmit", counter, sesCon, final.script, packages)
> 2: soam.Rapply(x, tester, join.method = c, njobs = 2)
> So it seems like a scoping problem to me, though I'm unsure how to
> solve it.
> View this message in context: http://www.nabble.com/Using-
> Sent from the R devel mailing list archive at Nabble.com.
> R-devel at r-project.org mailing list
More information about the R-devel