Soli Deo Gloria!
#include <EXTERN.h> /* from the Perl distribution */ #include <perl.h> /* from the Perl distribution */ 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, NULL, argc, argv, (char **)NULL); perl_run(my_perl); perl_destruct(my_perl); perl_free(my_perl); PERL_SYS_TERM(); }编译器如果是vc的话把 lib\CORE 路径加上 里面的include 和lib要设置如果是gcc: % gcc -O2 -Dbool=char -DHAS_BOOL -I/usr/local/include -I/usr/local/lib/perl5/i586-linux/5.003/CORE -L/usr/local/lib/perl5/i586-linux/5.003/CORE -o interp interp.c -lperl -lmwin平台的把-I -L换成你的CORE路径 -l 换成你的perl58=》对应perl58.lib然后运行这个程序interp(interp.exe)就可以当perl解释器用了。 % interp -e 'printf("%x", 3735928559)' deadbeef和 % interp print "Pretty Good Perl \n"; print "10890 - 9801 is ", 10890 - 9801; <CTRL-D> Pretty Good Perl 10890 - 9801 is 1089 更进一步应用可以改红色的两行。python的嵌入也是一样 需要的python的头文件和lib#include <Python.h> int main(int argc, char *argv[]) { Py_Initialize(); PyRun_SimpleString("from time import time,ctime\n" "print 'Today is',ctime(time())\n"); Py_Finalize(); return 0; } 编译器参数安装perl的来改; python随带的doc说的很清楚,另外boost里面也有直接嵌入python的库,需要编译bjam好辛苦。嵌入解释器的最典型的案例就是emacs,它嵌入了lisp解释器,使之就如一个操作系统一样不止是扩展和定制这么简单。应用到自己的项目,就可以给用户更多的方便,当然这就得使用堆栈访问的高级特性了。那c++ 和perl、python 两个程序分离不也行么?使用临时文件做介质,或使用子进程管道来取数据,但这样的结果就是环境不连贯,关键性地方性能受限,换句话,不是因为性能就只用perl、python好了。所以嵌入还是有其优点的。
% gcc -O2 -Dbool=char -DHAS_BOOL -I/usr/local/include -I/usr/local/lib/perl5/i586-linux/5.003/CORE -L/usr/local/lib/perl5/i586-linux/5.003/CORE -o interp interp.c -lperl -lmwin平台的把-I -L换成你的CORE路径 -l 换成你的perl58=》对应perl58.lib然后运行这个程序interp(interp.exe)就可以当perl解释器用了。 % interp -e 'printf("%x", 3735928559)' deadbeef和 % interp print "Pretty Good Perl \n"; print "10890 - 9801 is ", 10890 - 9801; <CTRL-D> Pretty Good Perl 10890 - 9801 is 1089 更进一步应用可以改红色的两行。python的嵌入也是一样 需要的python的头文件和lib#include <Python.h> int main(int argc, char *argv[]) { Py_Initialize(); PyRun_SimpleString("from time import time,ctime\n" "print 'Today is',ctime(time())\n"); Py_Finalize(); return 0; } 编译器参数安装perl的来改; python随带的doc说的很清楚,另外boost里面也有直接嵌入python的库,需要编译bjam好辛苦。嵌入解释器的最典型的案例就是emacs,它嵌入了lisp解释器,使之就如一个操作系统一样不止是扩展和定制这么简单。应用到自己的项目,就可以给用户更多的方便,当然这就得使用堆栈访问的高级特性了。那c++ 和perl、python 两个程序分离不也行么?使用临时文件做介质,或使用子进程管道来取数据,但这样的结果就是环境不连贯,关键性地方性能受限,换句话,不是因为性能就只用perl、python好了。所以嵌入还是有其优点的。
% interp -e 'printf("%x", 3735928559)' deadbeef和 % interp print "Pretty Good Perl \n"; print "10890 - 9801 is ", 10890 - 9801; <CTRL-D> Pretty Good Perl 10890 - 9801 is 1089 更进一步应用可以改红色的两行。python的嵌入也是一样 需要的python的头文件和lib#include <Python.h> int main(int argc, char *argv[]) { Py_Initialize(); PyRun_SimpleString("from time import time,ctime\n" "print 'Today is',ctime(time())\n"); Py_Finalize(); return 0; } 编译器参数安装perl的来改; python随带的doc说的很清楚,另外boost里面也有直接嵌入python的库,需要编译bjam好辛苦。嵌入解释器的最典型的案例就是emacs,它嵌入了lisp解释器,使之就如一个操作系统一样不止是扩展和定制这么简单。应用到自己的项目,就可以给用户更多的方便,当然这就得使用堆栈访问的高级特性了。那c++ 和perl、python 两个程序分离不也行么?使用临时文件做介质,或使用子进程管道来取数据,但这样的结果就是环境不连贯,关键性地方性能受限,换句话,不是因为性能就只用perl、python好了。所以嵌入还是有其优点的。
% interp print "Pretty Good Perl \n"; print "10890 - 9801 is ", 10890 - 9801; <CTRL-D> Pretty Good Perl 10890 - 9801 is 1089
posted on 2007-05-08 11:00 康国庆--thinkinlove 阅读(2093) 评论(0) 编辑 收藏 所属分类: unix&BSD&linux, perl&python&Tcl, c++&STL&boost
Powered by: 博客园 Copyright © 康国庆--thinkinlove