C程序如何调用Perl函数?

C程序如何调用Perl函数?,第1张

概述我正在使用call_pv从我的C程序调用perl子例程. 我有两个问题: > C程序如何找到定义此子例程的Perl文件?有没有我们可以定义Perl文件名的地方? >如果Perl返回哈希引用作为输出,我如何在C中读取它? 这是我的C函数: static int call_perl_fn(char* image){dSP;int count;ENTER;SAVETMPS;PUSHMARK 我正在使用call_pv从我的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 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函数?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1214351.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存