2011-09-02 73 views
2

我想安裝一個項目,使用flex(快速lex,而不是adobe之一)。我在Ubuntu上運行,並通過apt-get方法安裝了flex。使用從flex生成的文件的問題

我已經使用了編譯錯誤,我發現只是在它周圍創建自己的補丁的人,或者很多論壇中的人問,沒有人回答。

這是我.ll文件

%option c++ 

%% 

%% 

它會產生一個lex.yy.cc文件,其中包括我在我的主文件。

#include "lex.yy.cc" 

int main() 
{ 
    return 0; 
} 

我得到的錯誤是很多像這樣的「多重定義」錯誤。

lex.yy.cc | 511 | `yyFlexLexer :: yylex()'|的多重定義

我很堅持,flex版本是2.5.35,我通過code :: blocks編輯器使用gcc編譯器。

如果我直接通過終端編譯主文件。我明白了。

未定義的參考`yyFlexLexer :: yywrap()」

回答

2

發現問題!您不應該包含生成的文件,而是編譯它並將其包含爲目標文件。

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