2014-09-10 25 views
1

Я создал простой файл Flex для чтения и возврата токенов из файла. Я создал файл сканера, используя команду flex -C++ scanner.l. При попытке скомпилировать сгенерированный lex.yy.cc файл я получаю сообщение об ошибке, как:Неустранимая ошибка: FlexLexer.h: Нет такого файла или каталога

Fatal error: FlexLexer.h: No such file or directory 

включаемой папка прогибается содержит файл FlexLexer.h. Я также попытался скопировать файл в ту же папку, где находится lex.yy.cc. Тем не менее ошибка существует.

Я использую Windows7.

Как я могу решить эту проблему. Спасибо

+0

какой компилятор/IDE вы используете? – user685684

+0

@ user685684: Я скомпилировал с помощью gcc (g ++ lex.yy.cc) из командной строки. Я также пробовал использовать Dev C++ и Visual Studio 2010. – Jackzz

ответ

2

Сформированный сканер использует линию:

#include <FlexLexer.h> 

, что означает, что файл FlexLexer.h будет искать в системе, включают каталоги. Если вы правильно установите flex, установка должна поместить файл FlexLexer.h в какой-либо системный каталог. Если вы просто загрузите источник flex и скомпилируете его без его установки, это не сработает. И это может не работать в среде Windows; Я никогда не пробовал.

Если у вас нет другой альтернативы, и вы используете gcc, вы можете сказать gcc использовать каталог include в flex исходном дереве в качестве системы включает в себя каталог с помощью опции командной строки -isystem /path/to/flex/include. Почти наверняка эквивалент VS2010, но я понятия не имею, что это такое.

+0

Я установил flex в свою систему, и папка include содержит требуемый файл заголовка. В любом случае, я попробую использовать параметр командной строки, который вы сказали. Thankyou – Jackzz

+0

Я попытался использовать параметр командной строки. Затем он показывает eror как _C: \ GnuWin32 \ include/FlexLexer.h: 47: 22: фатальная ошибка: iostream.h: нет такого файла или каталога_. – Jackzz

+0

@ANU: У вас есть старая версия flex. Вы должны получить более новую. Вы можете отредактировать FlexLexer.h, чтобы изменить строку 47 из '#include ' (которая никогда не была правильной) на '#include ', но я думаю, что есть и другие проблемы с скелетом C++ для этих старых версий flex. – rici

Смежные вопросы