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();
}