视觉工作室中的yacc和野牛

时间:2011-07-03 14:10:29

标签: visual-studio visual-studio-2010 porting yacc bison

我打算将用于unix的C项目移植到windows中。到目前为止,我可以编译但不能编译。我得到的问题是,在头文件中声明的一些函数是在yacc文件中定义的。所以我得到以下错误:

 error LNK2001: unresolved external symbol function_name

我加入.Y和.L文件在project.I的源目录觉得我不能端口YACC文件到Windows版本或我做的事情stupid.I搜索它的网络,但不能得到正确教程它。请你告诉我

  1. 我如何在项目中添加.y或.l文件。
  2. 如何使这些文件与Windows兼容?
  3. 如何将它们与其他目标文件链接。
  4. 修改

    我尝试使用.l .yy.c文件更改为flex.exe文件。以下是命令

         c:\> flex.exe name.l
    

    假设flex.exe和name.l都在C;>中。我将所有这些文件 .l .y(previously present for parsing in unix system) .yy.c(corrsonding yacc file for windows)加载到以前现有项目的解决方案中。编译完成后,我得到以下内容

     Can't read the header file  parserheaderfile.h 
    

    这是头文件,需要由unix中的 bison 生成 系统。所以我认为我无法使 bison windows兼容。所以请他帮我,我该如何解决这个问题?

    提前致谢。

1 个答案:

答案 0 :(得分:7)

您需要为.y和.l文件添加自定义构建规则。为此,您需要

  1. 为.l文件和.y文件
  2. 创建一个虚拟.c文件
  3. 将.l,.y和.c文件添加到项目
  4. 右键单击.l文件并选择属性
  5. 配置 - >所有配置
  6. 常规 - >项目类型 - >自定义构建工具
  7. 应用
  8. 自定义构建工具 - >常规 - >命令行 - > flex -olexer.c lexer.l
  9. 自定义构建工具 - >常规 - >输出 - > lexer.c
  10. 自定义构建工具 - >常规 - >其他依赖关系 - > parser.y parser.c
  11. 应用
  12. 在解决方案资源管理器中选择.y文件
  13. 配置 - >所有配置
  14. 常规 - >项目类型 - >自定义构建工具
  15. 应用
  16. 自定义构建工具 - >常规 - >命令行 - > bison -oparser.c parser.y
  17. 自定义构建工具 - >常规 - >输出 - > parser.c parser.h
  18. 此外,您还需要在系统搜索路径中包含flex.exe,bison.exe和m4.exe。另一个缺点是VS没有正确的依赖关系,因此当您在解析器或词法分析器文件中更改某些内容时,您需要手动重建项目。