[置顶] 在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();
}

 

你可能感兴趣的:([置顶] 在windows平台下在C语言中调用perl脚本)