致命错误: FlexLexer.h文件不存在

5

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

Fatal error: FlexLexer.h: No such file or directory

Flex的include文件夹中包含FlexLexer.h文件。我尝试将该文件复制到与lex.yy.cc相同的文件夹中,但仍然存在错误。

我正在使用Windows7操作系统。

请问如何解决这个问题。谢谢。


你使用的编译器/集成开发环境是什么? - user685684
@user685684:我使用命令提示符编译了gcc(g++ lex.yy.cc)。我还尝试过使用Dev C++和Visual Studio 2010。 - Jackzz
1个回答

4
生成的扫描器使用以下代码行:
#include <FlexLexer.h>

这意味着系统包含目录将搜索FlexLexer.h文件。如果您正确安装了flex,则安装应该将FlexLexer.h文件放在某个系统包含目录中。如果您只下载flex源代码并编译它而没有安装它,那是行不通的。在Windows环境下也可能无法工作;我从未尝试过。
如果您没有其他选择,并且正在使用gcc,则可以使用命令行选项-isystem /path/to/flex/include告诉gcc使用flex源树中的include目录作为系统包含目录。几乎肯定有一个VS2010等效版本,但我不知道它是什么。

2
我尝试使用命令行选项,但是它显示错误_C:\GnuWin32\include/FlexLexer.h:47:22: 致命错误: iostream.h: 没有那个文件或目录_。 - Jackzz
1
@ANU:你使用的flex版本过旧,建议升级到新版本。你可以编辑FlexLexer.h文件,将第47行的#include <iostream.h>改为#include <iostream>,但我认为对于这些旧版本的flex,C++骨架存在其他问题。 - rici
好的,谢谢你的大力帮助。我之前卡住了,不知道该怎么做。非常感谢。 - Jackzz
17
FYI:在Ubuntu 18.04上,除了安装flex软件包外,还需要安装libfl-dev才能获取FlexLexer.h - Dave
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接