Using eval_pv, you'd have to initialise the string as Perl code.
eval_pv("$string = \"This is a string\"; print(\"$string\\n\");");
What you really want is call_*. Look at "Passing Parameters" in perlcall.
static void call_some_perl_sub(const char* s) {
dSP;
ENTER;
SAVETMPS;
PUSHMARK(SP);
XPUSHs(sv_2mortal(newSVpv(s, strlen(s))));
PUTBACK;
call_pv("some_perl_sub", G_DISCARD);
FREETMPS;
LEAVE;
}
Where some_perl_sub does your printing. eval_pv can be used to create the sub in the first place.
Update: Added code. |