用的VC 2005, 和原来VC 6的设置项对应不上, 很多半天都找不到.好不容易找全了, 却还是编译出错.
最后,只好选择再装一个VC6, 嗯, 两个VC, 不错.

先介绍一下Parser Generator,主页下载:http://www.bumblebeesoftware.com/downloads.htm
Parser Generator is a YACC and Lex programming tool for Windows. As well as including a Graphical User Interace, the software also includes two versions of YACC and Lex, called AYACC and ALex. Parser Generator is able to generate C, C++ and Java parsers and lexical analysers. This includes both Unicode and Multibyte Character Set (MBCS) variants. In your applications you can create multiple, thread safe, instances of these parsers and lexical analysers.

        下面说一下windows环境下parser generator和vc++的各项配置

 (一)parser generator的环境设置

         安装好parser  generator,打开集成开发环境,点项目Project菜单,在下拉菜单中选LibBuilder,弹出LibBuilder对话框选择属性按钮,弹出compiler properties 对话框: 
   Name 选择Visual C++ (32-bit)

   Directory :msvc32
   options:

  依次为  vc++版本(Versoin 6)
  是否支持unicode码。(选择默认)
  是否把w_char_t作为内建类型。(选择默认)

  下边是VC的各种目录:
  依次为
  Compiler Bin Directory (C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\BIN

  Compiler Bin Directory(C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\COMMON\MSDEV98\BIN

 Compiler Include Directory(C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\INCLUDE

  Compiler Include Directory(C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\MFC\INCLUDE

  Compiler Library Directory(C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\LIB

  Compiler Library Directory(C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\MFC\LIB

    注意:编译器安装目录根据个人安装目录需要做相应的调整。所有的这些设置完成之后点ok。

      最后一步,配置parser  generator的properties,如图即可:


      返回LibBuilder。点Build就可以编译vc++使用的lex与yacc的lib库。

            注:我参考Vs 2003.net的设置,在VC 2005下进行相应设置, 结果lex与yacc的lib库没能编译通过, 可能是我设置错误, 不应该是尚不兼容的问题吧. 

    生成库文件在软件安装目录下的D:\Parser Generator 2\Cpp\Lib\msvc32目录下。

(二)vc++环境的设置

  1.目录设置

         为了在VC++中可以找到包含文件yacc.h和lex.h以及YACC和Lex的库文件,需要对VC++进行相关的目录设置
(1)       选择Tools菜单中的Options命令,打开Options对话框。
(2)       选择Directories选项卡。
(3)       在Show Directories for下拉列表框中选择Include Files。
           在Directories框中,点击最后的空目录,并填入 F:\PARGEN\CPP\INCLUDE(根据个人安装目录需要做相应的调整)
(4)       在Show Directories for下拉列表框中选择Library Files。
           在Directories框中,点击最后的空目录,并填入F:\PARGEN\CPP\LIB\MSVC32
(5)       在Show Directories for下拉列表框中选择Source Files。
           在Directories框中,点击最后的空目录,并填入F:\PARGEN\CPP\SOURCE
(6)       点击OK按钮,Options对话框将接受设置并关闭。
 

2.项目设置
        对于每个VC++项目,都需在VC++中进行以下设置,以使VC++可以从特定的库中接受LEX和YACC所需要的函数和变量
(1)       选择Project菜单中的Settings命令,打开Project Settings对话框。
(2)       在Settings for下拉列表框中选择Win32 Debug。
(3)       选择C/C++选项卡, 在Category下拉列表框中选择General。
                 在Preprocessor Definitions框中,在当前文本的最后,输入
                ,YYDEBUG
            注:对应到VC 2005为C/C++->Preprocessor->Preprocessor Definitions.
(4)       选择Link选项卡,在Category下拉列表框中选择General。
                 在Object/Library Modules框中,在当前文本的后面,输入yld.lib
            注:VC 6中的Object/Library Modules对应到VC 2005为Propert->Configuration Properties->Linker->Input->Additional Dependencies ,找了好久.
(5)       在Settings for下拉列表框中选择Win32 Release。
(6)     重复第4步的工作。
(7)   点击OK按钮,Project Settings对话框设置完毕。

   这样设置之后我们就可以用vc++编译Parser Generator 生成的c文件了。具体为:
  先打开Parser Generator 集成开发环境。点击Project菜单,点击下拉菜单中的ParseWizard菜单,一路下去建立一个工程。然后点击project菜单下的的Rebuild  All。在项目文件夹下就生成了相应c文件与h文件。
  再用VC++建立一个空控制台工程,然后把用用Parser Generator
生成的c文件和头文件加入工程中。接着对VC++进行上面所说的项目设置,然后就可以编译运行了。新手可以使用parser generator 自带的范例,这样方便检验环境的配置是否正确.


posted on 2007-04-23 18:34 哈哈 阅读(4343) 评论(5)  编辑 收藏 引用

评论:
# re: 终于成功配置lex和yacc的工具Parser Generator 2007-07-19 12:40 | huh
在Net2003中编译生成的C++代码出如下错误:
vc_test error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall yl::yyflexer::yyflexer(void)" (__imp_??0yyflexer@yl@@QAE@XZ) ,该符号在函数 "public: __thiscall mylexer::mylexer(void)" (??0mylexer@@QAE@XZ) 中被引用
vc_test error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: virtual __thiscall yl::yyflexer::~yyflexer(void)" (__imp_??1yyflexer@yl@@UAE@XZ) ,该符号在函数 __unwindfunclet$??0mylexer@@QAE@XZ$0 中被引用
vc_test fatal error LNK1120: 2 个无法解析的外部命令
请赐教.  回复  更多评论
  
# re: 终于成功配置lex和yacc的工具Parser Generator 2007-07-20 01:13 | pengkuny
@huh
Net2003没用过,
从错误信息来看,

是配置parser的时候编译没通过.

如果不是,那我也没辙.
  回复  更多评论
  
# re: 终于成功配置lex和yacc的工具Parser Generator 2008-03-14 12:15 | Echo
按照你的配置,单独运行“.l”或者“.y”生成的“.c”文件都没问题,可是要编译两种文件都有的项目就不能成功,该怎么办呢,请赐教  回复  更多评论
  
# re: 终于成功配置lex和yacc的工具Parser Generator[未登录] 2008-11-08 21:55 | 1
按照你的配置,单独运行“.l”或者“.y”生成的“.c”文件都没问题,可是要编译两种文件都有的项目就不能成功,该怎么办呢,请赐教
shandafu@tom.com
  回复  更多评论
  
# re: 终于成功配置lex和yacc的工具Parser Generator 2008-12-15 22:42 | xinshou
error LNK2001: unresolved external symbol _yytop
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/Text1.exe : fatal error LNK1120: 2 unresolved externals
执行 link.exe 时出错.


单独编译没问题,
.C .H一起编译出现上述错误啊....
请指教 hanfeng_nj@163.com  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理