使用 Flex 生成的文件时出现问题

发布于 2024-12-02 23:13:56 字数 613 浏览 1 评论 0原文

我正在尝试设置一个使用 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()”的未定义引用

I am trying to setup a project that uses flex (fast lex, not the adobe one). I am running on Ubuntu and I installed flex via the apt-get method.

I have googled the compile error and I have either found people who just create their own patches around it or a lot of forums where people ask and nobody answers.

This is my .ll file

%option c++

%%

%%

It generates a lex.yy.cc file which I include in my main file.

#include "lex.yy.cc"

int main ()
{
    return 0;
}

The error I get are a lot of "multiple definition" errors like this.

lex.yy.cc | 511 | multiple definition of `yyFlexLexer::yylex() ' |

I am pretty stuck, the flex version is 2.5.35 and I am using the gcc compiler through the code::blocks editor.

If I compile the main file straight through the terminal. I get this.

undefined reference to `yyFlexLexer::yywrap()'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤独陪着我 2024-12-09 23:13:56

发现问题了!您不应包含生成的文件,而应编译它并将其作为目标文件包含在内。

flex file.ll 
g++ -c lex.yy.cc 
g++ -o main main.cpp lex.yy.o

Found the problem! You should not include the generated file but compile it and include it as an object file.

flex file.ll 
g++ -c lex.yy.cc 
g++ -o main main.cpp lex.yy.o
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文