Integrationsproblem Flex Bison in Visual Studio?

Welche Flex Version verwendest du?

Welche Flex Version verwendet dein Kumpel?

Was hat dein Kumpel evtl. für Parameter in seiner Projektdatei anders eingestellt als du?

Gruß
 
Ich verwende 2.5.4
Von meinem Kumpel kann ich dir jetzt nicht sagen. Ich habe das Projekt von ihm (< VS 2005) importiert und musste nix ändern. Es lief. Er hat allerdings tatsächlich teilweise andere Parameter. Die habe ich in meinem Projekt natürlich ausprobiert - und sie funktionieren nicht.
 
Ich habe in der langen Fehlerliste gerade eine Warnung entdeckt, die eventuell interessant sein könnte:

Warnung 7 warning C4005: 'YY_PROTO': Makro-Neudefinition ANA\anaqueryscanner.l.cpp 65

Da steht dann:

Code:
#ifdef YY_USE_PROTOS
#define YY_PROTO(proto) proto
#else
#define YY_PROTO(proto) ()
#endif
 
Das Makro-Problem scheint gelöst! Ich habe einfach mal bei den generierten Files (in meinem Falle anaqueryscanner.l.cpp und anaqueryparser.y.cpp) die Eigenschaften überprüft. Dort war die Einstellung "Vorkomilierte Header verwenden eingestellt! So gehts nicht. Ich hatte immer nur bei den Flex- und Bison-Files nachgeschaut...

Nun habe ich aber eine neue Fehlermeldung:

Fehler 1 error C2373: 'isatty': Neudefinition; unterschiedliche Modifizierer ana\anaqueryscanner.l.cpp 1196

an folgender Stelle:

Code:
#ifndef _WIN32
#include <unistd.h>
#else
#ifndef YY_ALWAYS_INTERACTIVE
#ifndef YY_NEVER_INTERACTIVE
extern int isatty YY_PROTO(( int ));
#endif
#endif
#endif

Was kann das jetzt sein?

@deepthroat: Bis jetzt erstmal vielen Dank für den Gehirnschmalz!
 
Ach, vorkompilierte Header - da soll nun einer drauf kommen... ;)

Das neue Problem ist auch irgendwie seltsam. Zumal ich auch Flex Version 2.5.4 habe und bei mir generiert das Programm anderen Code.

Die Frage ist wo und vor allem wie die Funktion schonmal definiert wurde.

Evtl. hilft es ja schon, den von Flex generierten C Code nicht mit dem C++ Compiler zu kompilieren. (obwohl es funktionieren sollte) Ich nehme an, man müsste lediglich statt .cpp Dateien .c Dateien erstellen lassen.

Gruß
 
Die tolle Suche im Visual Studio sagt mir eben, dass das Ding nirgends zu finden ist.
Ich suche mal noch weiter. Vielleicht habbich wieder was übersehen / nicht gefunden? :confused:
 
Nur zur Info, ich hatte io.h noch in der stdafx.h included. Ohne die gehts jetzt.

Nun muss ich Flex und Bison nur noch mit MC++ in Einklang bekommen.
Weiß jemand, auf was man da achten muss, im Vergleich zu "normalem" C / C++?

Gruß Tobian.
 
Jetzt wirds richtig haarig...

Weiß jemand mit folgenden Fehlermeldungen was anzufangen?

Code:
error LNK2028: Nicht aufgelöstes Token (0A0000CB) ""int __clrcall isatty(int)" (?isatty@@$$FYMHH@Z)", auf das in Funktion ""void __clrcall yy_init_buffer(struct yy_buffer_state *,struct _iobuf *)" (?yy_init_buffer@@$$FYMXPAUyy_buffer_state@@PAU_iobuf@@@Z)" verwiesen wird.	anaqueryscanner.l.obj

und wahrscheinlich daraus entstehend

Code:
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""int __clrcall isatty(int)" (?isatty@@$$FYMHH@Z)" in Funktion ""void __clrcall yy_init_buffer(struct yy_buffer_state *,struct _iobuf *)" (?yy_init_buffer@@$$FYMXPAUyy_buffer_state@@PAU_iobuf@@@Z)".	anaqueryscanner.l.obj
 
Jetzt wirds richtig haarig...

Weiß jemand mit folgenden Fehlermeldungen was anzufangen?

Code:
error LNK2028: Nicht aufgelöstes Token (0A0000CB) ""int __clrcall isatty(int)" (?isatty@@$$FYMHH@Z)", auf das in Funktion ""void __clrcall yy_init_buffer(struct yy_buffer_state *,struct _iobuf *)" (?yy_init_buffer@@$$FYMXPAUyy_buffer_state@@PAU_iobuf@@@Z)" verwiesen wird.	anaqueryscanner.l.obj

und wahrscheinlich daraus entstehend

Code:
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""int __clrcall isatty(int)" (?isatty@@$$FYMHH@Z)" in Funktion ""void __clrcall yy_init_buffer(struct yy_buffer_state *,struct _iobuf *)" (?yy_init_buffer@@$$FYMXPAUyy_buffer_state@@PAU_iobuf@@@Z)".	anaqueryscanner.l.obj
Das ist ein Fehler im generierten Code.
C:
extern int isatty YY_PROTO(( int ));
Sollte lauten:
C:
extern "C" int isatty YY_PROTO(( int ));

Dieser Fehler tritt nicht auf, wenn der Code als C Code kompiliert wird.

\edit: Der Fehler tritt auch nicht auf, wenn man das Makro YY_ALWAYS_INTERACTIVE bzw. YY_NEVER_INTERACTIVE definiert.

Gruß
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück