Проблема с использованием сгенерированного файла из flex

Я пытаюсь настроить проект, который использует flex (быстрый лекс, а не Adobe). Я работаю в Ubuntu и установил flex с помощью метода apt-get.

Я погуглил ошибку компиляции и нашел либо людей, которые просто создают свои собственные патчи вокруг нее, либо множество форумов, где люди спрашивают, но никто не отвечает.

Это мой файл.ll

%option c++

%%

%%

Он генерирует файл lex.yy.cc, который я включаю в свой основной файл.

#include "lex.yy.cc"

int main ()
{
    return 0;
}

Я получаю много ошибок типа "многократное определение".

lex.yy.cc | 511 | множественное определение `yyFlexLexer::yylex() ' |

Я довольно застрял, Flex версия 2.5.35, и я использую компилятор gcc через редактор code::blocks.

Если я скомпилирую основной файл прямо через терминал. Я понял это.

неопределенная ссылка на `yyFlexLexer::yywrap()'

1 ответ

Нашел проблему! Вы не должны включать сгенерированный файл, а компилировать его и включать в него как объектный файл.

flex file.ll 
g++ -c lex.yy.cc 
g++ -o main main.cpp lex.yy.o
Другие вопросы по тегам