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脚本,嘿嘿,那就通过读一个配置文件以传递脚本名称吧。
今日,改写一些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脚本,嘿嘿,那就通过读一个配置文件以传递脚本名称吧。
相关文章推荐
- VC++调用其它程序2
- 在VC程序中调用服务组件
- 在VC中调用默认的电子邮件程序发送邮件
- VC中调用其他程序的函数
- VC 中调用默认邮件发送程序(Outlook)发送 指定附件的email
- 在VC程序中调用exe文件或者批处理文件方法总结
- vc入门宝典十二(调用其它程序)
- VC调用 JavaScript 难题:如何使当前程序的对象进入脚本
- VC中调用其他程序的方法(函数)
- 关于vc程序调用数据库问题
- vc入门宝典十二(调用其它程序)
- 在VC中调用默认的电子邮件程序发送邮件
- VC++调用其他程序
- 用Java调用VC音量控制程序
- VC++调用其它语言编写的程序
- vc中调用控制台程序
- VC++的程序调用汇编的子程序
- vc程序报错- 调用动态库并传文件指针操作
- perl程序如何调用其他程序而且不等待
- JAVA程序调用Perl脚本