我正在尝试设置一个使用 flex 的项目(fast lex,而不是 adobe)。我在 Ubuntu 上运行,并通过 apt-get 方法安装了 flex。
我用谷歌搜索了编译错误,我要么找到了围绕它创建自己的补丁的人,要么找到了很多论坛,人们在其中询问但没有人回答。
这是我的 .ll 文件
%option c++
%%
%%
它生成一个 lex.yy.cc 文件,我将其包含在我的主文件中。
#include "lex.yy.cc"
int main ()
{
return 0;
}
我得到的错误是很多像这样的“多重定义”错误。
lex.yy.cc | 511 | 511 `yyFlexLexer::yylex() ' 的多重定义 |
我很困惑,flex 版本是 2.5.35,我通过 code::blocks 编辑器使用 gcc 编译器。
如果我直接通过终端编译主文件。我明白了。
对“yyFlexLexer::yywrap()”的未定义引用
发现问题了!您不应包含生成的文件,而应编译它并将其作为目标文件包含在内。
flex file.ll
g++ -c lex.yy.cc
g++ -o main main.cpp lex.yy.o
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)