Проблема с использованием сгенерированного файла из flex - PullRequest
2 голосов
/ 02 сентября 2011

Я пытаюсь настроить проект, который использует flex (fast lex, а не 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 Ответ

2 голосов
/ 02 сентября 2011

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

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