我有两个问题:
> 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 subroutinePUTBACK;count = call_pv("ImageInfo",G_SCALAR); //Invoking ImageInfo subroutineSPAGAIN;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;}解决方法 使用argv [1]来放置文件名,所以在perl_run之前(my_perl_interpreter);做这样的事情:
char *my_argv[] = { "","name_HERE.pl" };perl_parse(my_perl_interpreter,NulL,2,my_argv,(char **)NulL);
关于返回值,您应该使用POP来获取SV值,然后使用SvTYPE()检查它以确定类型,并执行相应的处理.
看看http://perldoc.perl.org/perlembed.html和http://perldoc.perl.org/perlcall.html
总结以上是内存溢出为你收集整理的C程序如何调用Perl函数?全部内容,希望文章能够帮你解决C程序如何调用Perl函数?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)