[Rd] Using R_MakeExternalPtr
Jonathan Zhou
jonathan.zhou at utoronto.ca
Wed Jul 25 17:35:57 CEST 2007
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'
Traceback:
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.
-Jon
--
View this message in context: http://www.nabble.com/Using-R_MakeExternalPtr-tf4142904.html#a11785023
Sent from the R devel mailing list archive at Nabble.com.
More information about the R-devel
mailing list