Проблема с использованием сгенерированного файла из 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