2011-09-02 8 views
2

flex (빠른 렉스, 어도비없는 파일)를 사용하는 프로젝트를 설정하려고합니다. 우분투에서 실행 중이며 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 
관련 문제