Re: [Rd] Using R_MakeExternalPtr

From: Hin-Tak Leung <hin-tak.leung_at_cimr.cam.ac.uk>
Date: Wed, 25 Jul 2007 17:40:35 +0100

As other has commented, without the rest/full of your code it is difficult to tell... I have a few suggestions though:

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'
>
> 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



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed 25 Jul 2007 - 16:43:46 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 25 Jul 2007 - 20:38:46 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.