Flex和G ++的链接器错误?

| 当我尝试使用
g++
编译生成的扫描器时,遇到了
flex
链接器错误。如果我给
flex
以下(非常简单)的脚本:
%%
.  ECHO;
然后运行
flex
flex++ scanner.l 
然后尝试将生成的代码编译为
g++ lex.yy.cc -ll
我收到以下错误:
/tmp/ccD5WdY3.o:(.rodata._ZTV11yyFlexLexer[vtable for yyFlexLexer]+0x28): undefined reference to `yyFlexLexer::yywrap()\'
/usr/lib/libl.a(libmain.o): In function `main\':
/build/buildd/flex-2.5.35/libmain.c:30: undefined reference to `yylex\'
collect2: ld returned 1 exit status
我不确定为什么会这样。我是否用
-ll
链接到错误的库?如果是这样,我应该怎么做才能解决此问题?     
已邀请:
        如您所述,我认为
-ll
是不必要的。 ѭ10可能包含如下代码:
int main() { return yylex(); }
但是,由
flex++
生成的扫描仪代码不包含独立的 功能
yylex
。 因此,如果扫描仪与上述
main
链接,则找不到linked13ѭ。 由
flex++
生成扫描仪时,该扫描仪需要专用的
main
而不是与
-ll
链接,最简单的
main
如下所示:
int main() {
  for ( yyFlexLexer l; l.yylex(); ) {}
}
至于C ++扫描器的用法, 这部分 Flex文档将有所帮助。 话虽如此,正如文件所述:   扫描类的当前形式   是实验性的,可能会改变   主要版本之间有相当大的差异 我不建议您积极使用C ++扫描仪。     

要回复问题请先登录注册