c++中嵌入perl,python
2008-09-13 14:35
441 查看
c++中嵌入perl,python
昨日无意翻了下“黑豹书”(perl 高级编程),发现里面的嵌入perl解释器的那部分
内容已经过时了,写下过程,关键点就是找到perl安装路径的lib/CORE
里面有 perl58.lib 或perl.lib ,
还有就是头文件 EXTERN.h and perl.h
。
代码为:interp.c(来自perldoc)
昨日无意翻了下“黑豹书”(perl 高级编程),发现里面的嵌入perl解释器的那部分
内容已经过时了,写下过程,关键点就是找到perl安装路径的lib/CORE
里面有 perl58.lib 或perl.lib ,
还有就是头文件 EXTERN.h and perl.h
。
代码为:interp.c(来自perldoc)
#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: [code] % 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 -lm win平台的把-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好了。所以嵌入还是有其优点的。
相关文章推荐
- c++中嵌入perl,python
- 在VS2012中C++嵌入python
- 配置Notepad++直接运行Python、Perl、C、C++、Java
- C++ 应用程序中 嵌入的python脚本与C++程序的互相调用(访问 通信)
- Python嵌入C++(1)
- C++ 扩展和嵌入 Python
- C++ 嵌入 Python3 -==- 1
- C++ 扩展和嵌入 Python
- 大牛谈各种语言 包括c/c++/java/python/ruby/lisp/perl
- C++代码中嵌入Python
- Python嵌入C++详解(3)--Import Class
- C、C++中如何成功嵌入python
- 将Python代码嵌入C++程序进行编写的实例
- 将Python代码嵌入C++程序进行编写的实例
- 将Python代码嵌入C++程序进行编写
- CentOS Linux Install Core Development Tools Automake, Gcc (C/C++), Perl, Python & Debuggers
- amazon的一个大牛谈各种语言,包括c、c++、java、python、ruby、lisp、perl
- C++ 嵌入 Python3 -==- 2
- c++中嵌入python代码
- 在C/C++程序中嵌入perl解释器---注意事项