gpt4 book ai didi

visual-studio - Visual Studio 中的 yacc 和 Bison

转载 作者:行者123 更新时间:2023-12-04 18:14:25 25 4
gpt4 key购买 nike

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

 error LNK2001: unresolved external symbol function_name

我正在项目的源目录中添加 .y 和 .l 文件。我想我无法将 yacc 文件移植到 Windows 版本中,或者我在做一些愚蠢的事情。我在网上搜索但无法获得正确的教程。可以你让我知道
  • 如何在项目中添加 .y 或 .l 文件。
  • 我如何使这些文件与 Windows 兼容?
  • 如何将它们与其他目标文件链接。

  • 编辑

    我尝试更改 .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 

    这是 bison 需要生成的头文件在 unix 中
    系统。所以我想我做不到 bison 兼容 windows .所以请他我如何解决这个问题?

    提前致谢。

    最佳答案

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

  • 为 .l 文件和 .y 文件创建一个虚拟的 .c 文件
  • 将 .l、.y 和两个 .c 文件添加到项目
  • 右键单击 .l 文件并选择属性
  • 配置->所有配置
  • 常规->项目类型->自定义构建工具
  • 申请
  • 自定义构建工具->常规->命令行-> flex -olexer.c lexer.l
  • 自定义构建工具->常规->输出-> lexer.c
  • 自定义构建工具->常规->附加依赖项-> parser.y parser.c
  • 申请
  • 在解决方案资源管理器中选择 .y 文件
  • 配置->所有配置
  • 常规->项目类型->自定义构建工具
  • 申请
  • 自定义构建工具->常规->命令行-> bison -oparser.c parser.y
  • 自定义构建工具->常规->输出-> parser.c parser.h

  • 您还需要在系统搜索路径中有 flex.exe、bison.exe 和 m4.exe。另一个缺点是 VS 没有正确获取依赖项,因此当您更改解析器或词法分析器文件中的某些内容时,您需要手动重建项目。

    关于visual-studio - Visual Studio 中的 yacc 和 Bison ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6563378/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com