Does it run if you switch double& to double? If so, it's a lack of entry in the typemap to handle double&.
Update: I managed to get Inline::CPP installed (with a patch from a bug report), and confirmed that the problem is indeed that double& isn't handled. I was able to make the code work using the following:
int f(double a, double b, double c, SV* x, SV* y, SV* z) { int error = -2; SvUPGRADE(x,SVt_NV); SvNV_set(x,a+42); SvNOK_on(x); SvSETMAGIC(x); SvUPGRADE(y,SVt_NV); SvNV_set(y,b+42); SvNOK_on(y); SvSETMAGIC(y); SvUPGRADE(z,SVt_NV); SvNV_set(z,c+42); SvNOK_on(z); SvSETMAGIC(z); return error; }
It may also be possible to keep the original prototype by creating a typemap entry for double&.
In reply to Re: Inline CPP function not found
by ikegami
in thread Inline CPP function not found
by markov
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |