我使用call_pv
從我的C程序調用perl子例程。 我有2個問題:C程序如何調用Perl函數?
C程序將如何在其中找到Perl的文件該子程序的定義?有什麼地方可以定義Perl文件名嗎?
如果Perl返回散列引用作爲輸出,我該如何在C中讀取它?
這是我的C函數:
static int call_perl_fn(char* image)
{
dSP;
int count;
ENTER;
SAVETMPS;
PUSHMARK(SP);
XPUSHs(sv_2mortal(newSVpv(image, 0))); //parameter to perl subroutine
PUTBACK;
count = call_pv("ImageInfo", G_SCALAR); //Invoking ImageInfo subroutine
SPAGAIN;
if (count != 1)
{
printf("ERROR in call_pv");
}
printf("VALUE:%s", (char*)(SvRV(POPp))); //How to read has reference output?
PUTBACK;
FREETMPS;
LEAVE;
return count;
}
......和「負責填實perlapi」關於宏的文檔和函數,用於處理原始數據類型(如SV *,AV *,HV *和朋友)的perl C表示。 – tsee