perl embeded into c++

发信人:wideexpress(冬瓜),信区:Perl
标题:菜鸟历程——将perl嵌入到vc++
发信站:水木社区(SatMay2823:36:252005),站内

因为要在vc环境下进行文本解析,所以想将perl嵌入到vc环境中来,在网上看到ActivePerl支持Windows环境,于是下了ActivePerl5.8.6,安装之后将环境变量和库文件设好,就可以在dos下进行脚本的编译运行了,但是嵌入vc却一直没搞定,多亏了chaoslawfullawful大侠,现将大侠的指点总结一下,算是对大侠的感谢了,呵呵。

一开始chaoslawful让我去看perldoc中EmbeddingPerlunderWin32的部分,当时我还不知道什么是perldoc以为就是ActiivePerl的Documentation,里面倒是有在Win32环境下的配置说明,但在vc环境下却没有说。直到chaoslawful第二次让我去看perldocperlembed时我才意识到这是一条命令,于是在dos下输入

C:\perldocperlembed

前面很多讲了如何将perl嵌入到c中,但重点是Linux环境下的,往后翻到EmbeddingPerlunderWin32,这里就有详细说明了。要想在MicrosoftDeveloperStudio中使用perl首先要运行:

perl-MextUtils::Embed-exsinit

生成perlxsi.c文件,然后在生成的vc工程中将perlxsi.c和perl.lib文件添加到SourceFiles文件夹中,这里注意perl.lib根据版本的不同也有不同,要到安装perl的文件夹下perl\lib\core中具体查找,比如我的就是perl58.lib。除此之外,还要在vc的工具-〉选项-〉目录中将相关的库文件添加进来,我是这样设的:

Executablefiles:c:\perl\bin
Includefiles:c:\perl\lib\core
Libraryfiles:c:\perl\lib\core

我的测试程序如下
首先建立一个Win32ConsolApplication工程,然后选择Asimpleapplication,程序如下
#include"EXTERN.h"
#include"perl.h"

staticPerlInterpreter*my_perl;

intmain(intargc,char**argv)
{
char*command_line[]={"","-e","print\"HellofromC!\\n\";"};

my_perl=perl_alloc();
perl_construct(my_perl);
perl_parse(my_perl,NULL,3,command_line,(char**)NULL);
perl_run(my_perl);
perl_destruct(my_perl);
perl_free(my_perl);
return0;
}
结果运行却无法通过,系统报错为fatalerrorC1010:unexpectedendoffilewhilelookingforprecompiledheaderdirectiveErrorexecutingcl.exe.

还是要感谢chaoslawful了,他在听完我的汇报之后得出了下述结论,引述一下:"唔,你建立工程的时候没有选中创建空白工程吧?这样产生的源文件应该还有stdafx.h和stdafx.cpp这两个预编译头文件,使用预编译头时需要在每个c/c++文件头部加入#include"stdafx.h",如果某个c/c++源文件没有对stdafx.h的引用就会出现C1010错误,解决办法:
1、创建工程时选中创建空白工程的选项,再添加自己的源代码,这样产生的工程不会有多余的文件,默认也不使用预编译头。
2、对于已经创建出来的带有stdafx.h/stdafx.cpp的工程,可以在工程的Settings中的C/C++部分PrecompiledHeaders中设置不使用预编译头。
3、或者可以在工程中每个C/C++源文件头部加入#include"stdafx.h",这样做有一点问题就是:产生的预编译头辅助文件是stdafx.cpp,是C++源文件,这样由stdafx.h包含进去的头文件生成环境都是C++,产生的预编译头不能用于C代码,所以整个工程里的源文件只能有cpp文件,当然这里可以把perlxsi.c改名为perlxsi.cpp,代码中考虑到了跨越c/c++,不会有问题,但有些场合这样做并不适用,所以这个不算是个好选择。"

按照chaoslawful所说我在三种情况下都作了调试,全部通过。再次感谢chaoslawful,啰嗦这么久,希望能对像我一样的初学者们有所帮助。


--

※修改:·wideexpress于May2909:36:45修改本文·[FROM:202.205.10.*]
※来源:·水木社区newsmth.net·[FROM:59.64.154.*]

[本篇全文] [回复文章] [回信给作者] [本篇作者:happierbee] [进入讨论区] [返回顶部] 2
发信人:happierbee(...),信区:Perl
标题:Re:菜鸟历程——将perl嵌入到vc++
发信站:水木社区(SunMay2900:01:152005),站内

汗!把chaoslawful名字拼错
【在wideexpress(冬瓜)的大作中提到:】
:因为要在vc环境下进行文本解析,所以想将perl嵌入到vc环境中来,在网上看到ActivePerl支持Windows环境,于是下了ActivePerl5.8.6,安装之后将环境变量和库文件设好,就可以在dos下进行脚本的编译运行了,但是嵌入vc却一直没搞定,多亏了caoslawfullawful大侠,现将大侠?/font>
:一开始caoslawful让我去看perldoc中EmbeddingPerlunderWin32的部分,当时我还不知道什么是perldoc以为就是ActiivePerl的Documentation,里面倒是有在Win32环境下的配置说明,但在vc环境下却没有说。直到caoslawful第二次让我去看perldocperlembed时我才意识到这是一
:C:\perldocperlembed
:...................

--
为了你的身心健康可养一只宠物,为了宠物的身心健康,就不要养了……


※来源:·水木社区newsmth.net·[FROM:219.223.160.*]

[本篇全文] [回复文章] [回信给作者] [本篇作者:rogerz] [进入讨论区] [返回顶部] 3
发信人:rogerz(章鱼·三人行必有我师),信区:Perl
标题:Re:菜鸟历程——将perl嵌入到vc++
发信站:水木社区(SunMay2900:02:292005),站内

连续的错误……
建议s/cao/chao/g
【在happierbee(...)的大作中提到:】
:汗!把chaoslawful名字拼错


--
童真的梦境!
静默;休教惊断了梦神的殷勤
愿生活像梦境般美好


※来源:·水木社区newsmth.net·[FROM:211.151.90.*]

[本篇全文] [回复文章] [回信给作者] [本篇作者:crazycool] [进入讨论区] [返回顶部] 4
发信人:crazycool(爱人水木),信区:Perl
标题:Re:菜鸟历程——将perl嵌入到vc++
发信站:水木社区(SunMay2900:25:332005),站内

以后perl板上就简称ch算了

【在rogerz(章鱼·三人行必有我师)的大作中提到:】
:连续的错误……
:建议s/cao/chao/g


--

Lookingforapowerfulandhandyverilogeditor?

http://vlog-mode.sourceforge.net


※来源:·水木社区newsmth.net·[FROM:202.205.10.*]

[本篇全文] [回复文章] [回信给作者] [本篇作者:Hibernate] [进入讨论区] [返回顶部] 5
发信人:Hibernate(阿飞~~博票回家看老妈~~),信区:Perl
标题:Re:菜鸟历程——将perl嵌入到vc++
发信站:水木社区(SunMay2901:11:162005),站内

赞一个,两个人都赞,一个教得仔细,一个学得认真,总结的也很好,虽然我用不上。

【在wideexpress(冬瓜)的大作中提到:】
:因为要在vc环境下进行文本解析,所以想将perl嵌入到vc环境中来,在网上看到
:ActivePerl支持Windows环境,于是下了ActivePerl5.8.6,安装之后将环境变量和库文件
:设好,就可以在dos下进行脚本的编译运行了,但是嵌入vc却一直没搞定,多亏了
:caoslawfullawful大侠,现将大侠?/font>
:一开始caoslawful让我去看perldoc中EmbeddingPerlunderWin32的部分,当时我还
:不知道什么是perldoc以为就是ActiivePerl的Documentation,里面倒是有在Win32环境下
:的配置说明,但在vc环境下却没有说。直到caoslawful第二次让我去看perldoc
:perlembed时我才意识到这是一
:C:\perldocperlembed
:...................

--
那个飘满雪的冬天永远都不会再回来了么?



※来源:·水木社区newsmth.net·[FROM:61.48.106.*]

[本篇全文] [回复文章] [回信给作者] [本篇作者:wideexpress] [进入讨论区] [返回顶部] 6
发信人:wideexpress(冬瓜),信区:Perl
标题:Re:菜鸟历程——将perl嵌入到vc++
发信站:水木社区(SunMay2909:37:532005),站内

-_-!!!居然连师傅的名字都拼错,赶紧改过来的说。:P
【在happierbee(...)的大作中提到:】
:汗!把chaoslawful名字拼错

你可能感兴趣的:(C++,c,C#,perl,vc++)