在windows平台下在C语言中调用perl脚本

OS: Windows XP SP2
Complier:Microsoft Visual Studio C++ 2005

1. 下载并安装ActivePerl-5.8.8.819-MSWin32-x86-267479.msi安装包。
2. 用cpan安装ExtUtils::Embed模块.
3. 从cpan下载MExtUtils::Embed安装包,从中提取genmake脚本。
4. 安装ActivePerl 5.10.
5. 将系统中path环境变量中关于ActivePerl 5.10的环境变量去掉。
6. 编写调用perl脚本的c程序t.c。
7. perl genmake t.c
8. 将Makefile中的路径替换成ActivePerl 5.10的路径。
9. nmake
10. 将Config.pm, lib.pm, strict.pm复制到脚本所在目录。
11. 编写测试脚本。

t.pl:
use strict;
use lib 'c://perl510//lib';
use lib 'c://perl510//site//lib';

use Digest::MD5 qw(md5 md5_hex md5_base64);
my  $digest = md5_base64('12345');
print $digest;
print @INC;

perlxsi.c:
#include <EXTERN.h>
#include <perl.h>

EXTERN_C void xs_init (pTHX);
EXTERN_C void boot_DynaLoader (pTHX_ CV* cv);

EXTERN_C void xs_init(pTHX)
{
 char *file = __FILE__;
 dXSUB_SYS;

 /* DynaLoader is a special case */
 newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file);
}


t.c:
#include <EXTERN.h>
#include <perl.h>

EXTERN_C void xs_init (pTHX);
EXTERN_C void boot_DynaLoader (pTHX_ CV* cv);

static PerlInterpreter *my_perl;  /***    The Perl interpreter    ***/

int main(int argc, char **argv, char **env)
{
 PERL_SYS_INIT3(&argc,&argv,&env);
 my_perl = perl_alloc();
 perl_construct(my_perl);
 PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
 perl_parse(my_perl, xs_init, argc, argv, (char **)NULL);
 perl_run(my_perl);
 perl_destruct(my_perl);
 perl_free(my_perl);
 PERL_SYS_TERM();
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值