您的位置:首页 > 其它

VC中调用perl程序

2014-10-04 10:49 232 查看
改文档转载于:http://blog.sina.com.cn/s/blog_477759e70100cx82.html

今日,改写一些perl生成顺序递增数的代码。为满足测试,需要不断运行以生成新的一百万个随机数。由于起始数不同,每次都需要在代码里的修改再运行(或敲命令的传递)。若只是我使用,也不会觉得太麻烦。但,队友使用起来就不太方便。还是用VC做个界面,在C/C++代码里调用perl脚本,做成笨蛋按钮式的,呵呵。。。

说真的,还真不知如何用C/C++调用perl呢?(当然这里的C/C++,俺是说用VS环境里的)。

网上搜索一下,CSDN里花3个积分下了一份简便的说明文档(作者是谁忘了,别怪我)。操作步骤如下:

1.VS里的工程设置:

工具->选项->项目和解决方案->VC++目录 ,在“显示以下内容的目录(S):”下拉框中选择“包括文件”, 添加*\bin, *\lib\core, *表示perl的安装路径。

工具->选项->项目和解决方案->VC++目录 ,在“显示以下内容的目录(S):”下拉框中选择“库文件”,添加*\lib\core, *表示perl的安装路径。

把perl58.lib加入到工程中,项目->“项目”属性->配置属性->链接器->命令行, 在附加选项里加上perl56.lib(因为俺用的perl版本是5.6的)

2.在项目的代码里添加头文件

#include "EXTERN.h" //引用外部的头文件

#include "perl.h" //perl头文件

3. 项目程序代码

int _tmain(int argc, _TCHAR* argv[])

{

// char *embedding[] = {"","C:\\data.pl","E:\\dumptobin"};//perl脚本和参数,第一个为空,没有空格,

//第二个为脚本文件,第三个为脚本的输入参数

char *embedding[] = {"","C:\\perl2\\CreateNumber.pl",""}; //俺的perl脚本的真实路径,没有输入参数

static PerlInterpreter *my_perl;//定义一个perl解释器

my_perl = perl_alloc();//为解释器分配资源

perl_construct( my_perl );//创建一个解释器

perl_parse(my_perl, NULL, 3, embedding, NULL);//perl解析

//perl_parse函数原型是:

//PERL_CALLCONV int perl_parse(PerlInterpreter* interp, XSINIT_t xsinit, int argc, char** argv, char** env)

perl_run(my_perl);//运行

// int str = SvIV(perl_get_sv("lastValue", FALSE));//把perl脚本中的变量lastValue传给C中的变量str,无效的语句

// printf("返回值为%d.\n", str);

perl_destruct(my_perl);//析构解释器

perl_free(my_perl);//释放解释器

return 0;

}

大体上就这些了。其它的用VS做界面框,各人需要自己去弄。(当然你得先安装了Perl)。

当然,这个仍是一个VC程序硬绑定一个perl脚本,若要实现程序界面(上面暂是控制台)和运行时刻选择perl脚本,嘿嘿,那就通过读一个配置文件以传递脚本名称吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: