smalia1969 has asked for the wisdom of the Perl Monks concerning the following question:

All -

Currently I'm using XS to interface with C APIs so I can help develop a testing framework. I've made some good progress, but now I'm stuck and I'm hoping somebody can point me in the right direction.

I've changed the XS code to return one (or more) objects back to Perl. This objects will be used to call other APIs. For example, the first API that is called is a open(), the open then returns a pointer to that opened object.

In the XS code, I've used the XPUSH approach (see below):
... mXPUSHi(status); mXPUSHi(aDedupeObjectName); mXPUSHi(aMetaDataObjectID); ...

On the Perl side, I get those values off the stack (which appears to work fine). The problem is, when I pass the object pointer to other APIs the application just hangs.

I'm guessing I have to do something with the object pointer, I just don't know what to do.

Any feedback would be greatly appreciated - Thanks !

Replies are listed 'Best First'.
Re: Using XSUBs, C APIs and pointers to objects
by Khen1950fx (Canon) on Feb 05, 2010 at 22:31 UTC
    I found a message by Simon Cozens concerning your problem. He suggests using XPUSHs instead of XPUSHi.