Flex を使用して、自分の言語用のレクサーを開発しています。C++ でパーサーを作成したいのですが、独自のアプローチを使用しています。レクサーは C (Flex) にあるため、レクサー ( gcc -c lex.yy.c -lfl
) とプログラム ( g++ -c file1.cc file2.cc ...
) を別々にコンパイルし、それらをリンクして最終的な実行可能ファイルを作成したいと考えています。
特に、レクサーを作成した後、C++ プログラム用に次のコードを記述します。
#include <iostream>
extern int yylex();
int main(int argc, char** argv);
int main (int argc, char** argv) {
yylex();
return 0;
}
しかし、次のようにリンクするとリンクエラーが発生します。
g++ main.cc lex.yy.o -lfl
しかし、私はいつも得ます:
/tmp/ccBrHObp.o: In function `main':
main.cc:(.text+0x10): undefined reference to `yylex()'
collect2: ld returned 1 exit status
問題はどこだ?ありがとうございました