如何在C程序中嵌入Perl

如何在C程序中嵌入Perl,第1张

如果你编译本文档中的脚本有困难。那么你不是一个人在战斗。记住重要原则: 以编译你的perl的方式,编译你的程序(不好意思)

并且,每一个使用了Perl的C程序都必须连接 perl 库 你问,那是什么?Perl本身就是用C写的。Perl库是编译过的用来创建Perl可执行程序的C程序集合 (/usr/bin/perl或者类似的)。(结论:你不能在没有编译过或者正确安装过Perl的系统中编译嵌入了Perl的C程序。不正确安装指,只是复制了Perl的二进制可执行文件而没有复制perl的库目录。)

当你在C中使用Perl时, 你的C程序将要--通常--需要创建、执行,然后销毁一个 Perl解释器

如果你的Perl烤备足够新到包含本文档 (版本5002或者更新), 则Perl库 (以及你将需要的EXTERNh 和 perlh) 将会在类似这样的目录中:

/usr/local/lib/perl5/your_architecture_here/CORE

或者可能就直接是

/usr/local/lib/perl5/your_architecture_here/CORE

或者可能类似

/usr/opt/perl5/CORE

执行这个表达式可以定位这个目录:

perl -MConfig -e 'print $Config{archlib}'

这是如何编译下节的示例代码:往你的C程序中墙加一个Perl解释器的语句,在我的linux机器上是这样:

% gcc -O2 -Dbool=char -DHAS_BOOL -I/usr/local/include -I/usr/local/lib/perl5/i586-linux/5003/CORE -I/usr/local/lib/perl5/i586-linux/5003/CORE -o interp interpc -lperl -lm

(那些是一行。) 在我跑着老版本perl 5003_05的DEC Alpha机器上, 有一点点儿不一样:

% cc -O2 -Olimit 2900 -DSTANDARD_C -I/usr/local/include -I/usr/local/lib/perl5/alpha-dec_osf/500305/CORE -L/usr/local/lib/perl5/alpha-dec_osf/500305/CORE -L/usr/local/lib -D__LANGUAGE_C__ -D_NO_PROTO -o interp interpc -lperl -lm

你如何找出需要填加什么?如果你的Perl版本高于5001, 执行 perl -V 命令,注意一下它的有关``cc'' 和 ``ccflags''的信息。

你将不得不根据你的系统选择适当的编译器。 (cc,gcc,等等。) : perl -MConfig -e 'print $Config{cc}' 将告诉你用什么。

你还得根据你的系统选择正确的Perl库目录 (/usr/local/lib/) 如果你的编译器抱怨有函数未定义,或者它不能定位 -lperl,则你需要用-L手动指定库文件路径。如果它抱怨找不到EXTERNh 和 perlh,你需要用-I手动指定头文件路径。

你可能还需要如法增加其它库哪些?可能包括这行指令打印出的这些:

perl -MConfig -e 'print $Config{archlib}'

如果你的perl配置安装无误,则模块ExtUtils::Embed将为你检测出你需要的所有信息。

% cc -o interp interpc `perl -MExtUtils::Embed -e ccopts -e ldopts`

如果ExtUtils::Embed不包含在你的perl发行版中, 你可以从>

#include <stdioh>

#define ROW 3

#define COL 2

int main()

{

int a[ROW][COL];

int i,j,maxi,maxj,mini,minj,max,min;

printf("请输入数组a:");

for(i=0;i<ROW;i++)

for(j=0;j<COL;j++)

scanf("%d",&a[i][j]);

max=min=a[0][0];

maxi=maxj=mini=minj=0;

for(i=0;i<ROW;i++)

for(j=0;j<COL;j++)

{

if(a[i][j]>max)

{

max=a[i][j];

maxi=i;

maxj=j;

}

else if(a[i][j]<min)

{

min=a[i][j];

mini=i;

minj=j;

}

}

printf("数组的最大值为%d,位于第%d行,第%d列\n",max,maxi,maxj);

printf("数组的最小值为%d,位于第%d行,第%d列\n",min,mini,minj);

return 0;

}

以上就是关于如何在C程序中嵌入Perl全部的内容,包括:如何在C程序中嵌入Perl、关于 c语言编程的问题,请各位帮忙、编写函数求出任意一个二维数组元素中最大值和最小值的下标,c语言程序题,在线等,谢谢谢谢谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10079662.html

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

发表评论

登录后才能评论

评论列表(0条)

保存