Undefinierter Verweis auf 'yylex ()'

8

Ich versuche Flex und Bison zu verwenden, um eine einfache Skriptsprache zu erstellen. Im Moment versuche ich nur, einen Taschenrechner zum Laufen zu bringen.

Ich kann es jedoch nicht kompilieren. Wenn ich dieses Makefile ausführe:

%Vor%

in meinen .l- und .ypp-Dateien, bekomme ich diesen Fehler:

%Vor%

Und wenn ich den Befehl für all so mache:

%Vor%

es sagt, es konnte -lfl nicht finden. Und wenn ich es so mache:

%Vor%

es geht zurück zum undefined reference Fehler.

Tut mir leid, ich bin irgendwie ratlos.

EDIT: Ich habe flex installiert. Ich habe versucht, es von -lfl in C: /GnuWin32/lib/libfl.a zu ändern (Ich versuche Windows zu benutzen, weil Linux auf meinen Computern seltsame Probleme hat und ich noch keinen Mac habe), aber es hat immer noch den gleicher Fehler.

    
Micah 26.09.2009, 01:02
quelle

3 Antworten

11

Das Problem besteht darin, dass Sie hug.yy.c mit g ++ (als C ++ behandeln) anstelle von gcc kompilieren. Dies ist die Datei, die yylex definiert. Wenn Sie sie also als C ++ kompilieren, erhalten Sie eine CYXYYLEX-Funktion, während die anderen Dateien nach einer CYYLEX-Funktion suchen.

Versuchen Sie, extern "C" int yylex(); in den ersten Abschnitt Ihrer hug.l-Datei zu stecken, damit die C-Verknüpfung für yylex anstelle von C ++ verwendet wird.

    
Chris Dodd 07.12.2011 23:18
quelle
1

Haben Sie die Flex-Bibliothek installiert? Wenn ja, versuche etwas wie

%Vor%     
Nadir SOUALEM 27.09.2009 11:02
quelle
0

Ich habe meine Datei an diese Datei angehängt.

%Vor%

Jetzt gebe ich einen Segmentierungsfehler, aber ich kann es verlinken.

    
Dilawar 07.12.2011 20:36
quelle