致命错误:FlexLexer.h:没有这样的文件或目录

Jac*_*kzz 5 c++ windows flex-lexer

我创建了一个简单的 Flex 文件来读取并返回文件中的标记。我使用命令flex -c++scanner.l生成了扫描仪文件。当尝试编译生成的 lex.yy.cc 文件时,我收到以下错误:

Fatal error: FlexLexer.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

flex 的 include 文件夹包含 FlexLexer.h 文件。我还尝试将文件复制到 lex.yy.cc 所在的同一文件夹中。错误仍然存​​在。

我使用的是Windows7。

我怎么解决这个问题。谢谢

ric*_*ici 4

生成的扫描仪使用以下行:

#include <FlexLexer.h>
Run Code Online (Sandbox Code Playgroud)

这意味着FlexLexer.h将在系统包含目录中搜索该文件。如果你正确安装了flex,安装时应该将该FlexLexer.h文件放在某个系统包含目录中。如果你只是下载了flex源代码并编译它而不安装它,那是行不通的。而且它也可能无法在 Windows 环境中运行;我从来没有试过。

如果您没有其他选择,并且正在使用gcc,则可以gcc使用命令行选项将源树include中的目录用作系统包含目录。几乎可以肯定有一个 VS2010 的等效项,但我不知道它是什么。flex-isystem /path/to/flex/include

  • 仅供参考:在 Ubuntu 18.04 上,除了“flex”包之外,您还需要安装“libfl-dev”才能获取“FlexLexer.h”。 (17认同)
  • 我尝试使用命令行选项。然后它显示错误为 _C:\GnuWin32\include/FlexLexer.h:47:22: fatal error: iostream.h: No such file or directory_ 。 (2认同)
  • 如果有人想知道如何解决 Windows 问题,这里有一个为 Windows 制作 Flex 版本的 github 存储库:https://github.com/lexxmark/winflexbison/releases 您可以从那里下载版本,添加环境路径指向“win_flex”的可执行文件,您应该可以开始了。与往常一样,阅读该存储库中的文档 (2认同)