perl embeded into c++

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

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

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

C:/perldoc perlembed

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

perl -MextUtils::Embed -e xsinit

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

Executable files:c:/perl/bin
Include files:c:/perl/lib/core
Library files:c:/perl/lib/core

我的测试程序如下
首先建立一个Win32 Consol Application工程,然后选择A simple application,程序如下 
#include "EXTERN.h"
#include "perl.h"

static PerlInterpreter *my_perl;

int main(int argc, char **argv)
{
    char* command_line[] = {"", "-e","print /"Hello from C!//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);
    return 0;
}
结果运行却无法通过,系统报错为fatal error C1010: unexpected end of file while looking for precompiled header directive Error executing cl.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++部分Precompiled Headers中设置不使用预编译头。
3、或者可以在工程中每个C/C++源文件头部加入#include "stdafx.h",这样做有一点问题就是:产生的预编译头辅助文件是stdafx.cpp,是C++源文件,这样由stdafx.h包含进去的头文件生成环境都是C++,产生的预编译头不能用于C代码,所以整个工程里的源文件只能有cpp文件,当然这里可以把perlxsi.c改名为perlxsi.cpp,代码中考虑到了跨越c/c++,不会有问题,但有些场合这样做并不适用,所以这个不算是个好选择。"

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


--

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

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

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

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


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

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

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


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


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

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

以后perl板上就简称ch算了

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


--

    Looking for a powerful and handy verilog editor?

    http://vlog-mode.sourceforge.net


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

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

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

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

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



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

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

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

你可能感兴趣的:(windows,Hibernate,dos,perl,vc++,documentation)