The XS code could modify its iReturn and output the changes. Your C code is modifying an iReturn that is simply a copy and those changes don't leave the C code and XS can't do anything to change that.
If you want to have a C routine change a parameter, then you have to pass the parameter by reference.
.XS file: #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include <TestInclude.h> MODULE = TEST PACKAGE = TEST void C_function(iReturn) int &iReturn OUTPUT: iReturn C function: #include "TestInclude.h" void C_function( int *iReturn ) { *iReturn = 5; } .H prototype: void C_function( int *iReturn );
Untested.
- tye
In reply to Re: Perl extension parameters (by ref)
by tye
in thread Perl extension parameters
by timfar
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |