2011-07-03 15 views
5

Mam zamiar przenieść projekt C, który był dla systemu Unix do okien. Do tej pory mogłem go skompilować, ale nie zbudować. Problem jestem coraz to niektóre z funkcji, które są zadeklarowane w plikach nagłówkowych są zdefiniowane w yacc files.so otrzymuję następujące błędy:yacc i bizon w studiu graficznym

error LNK2001: unresolved external symbol function_name 

dodaję .y i dł pliki katalog źródłowy projektu. Myślę, że nie mogłem przesłać plików YACC do wersji Windows lub robię coś głupiego. Przeszukuję je w Internecie, ale nie mogę uzyskać odpowiedniego samouczka. Czy możesz mi powiedzieć:

  1. Jak mogę dodać pliki .y lub .l do projektu.
  2. Jak mogę uczynić te pliki kompatybilnymi z oknami?
  3. Jak mogę połączyć je z innymi plikami obiektowymi.

EDIT

Próbowałem ze zmianą na .l pliki w .yy.c plików przy użyciu flex.exe .Following jest komenda na to

 c:\> flex.exe name.l 

Przypuśćmy, że zarówno flex.exe i nazwisko. Jestem w C;>. I wczytałem te wszystkie pliki .l .y(previously present for parsing in unix system) .yy.c(corrsonding yacc file for windows) do rozwiązania poprzednio istniejącego projektu. Raz skompilować, otrzymuję następujące

Can't read the header file parserheaderfile.h 

Jest to plik nagłówka, który musi być generowane przez bison w systemie UNIX . Więc myślę, że nie jestem w stanie zrobić bison kompatybilny z windows. Więc proszę mi go, jak mogę rozwiązać ten problem?

Z góry dziękuję.

Odpowiedz

7

Musisz dodać niestandardowe reguły kompilacji dla plików .y i .l. Aby to zrobić, trzeba

  1. utworzyć jeden plik .c obojętne dla pliku .l i pliku .y
  2. dodać .L, .y i oba pliki .c do projektu
  3. kliknij prawym przyciskiem myszy na pliku i wybierz właściwości .l
  4. konfiguracja> Wszystkie konfiguracje
  5. General-> Element Type> zwyczaj budowania narzędzie
  6. Zastosuj
  7. zwyczaj budowania się do narzędzia> General-> Komenda Line->flex -olexer.c lexer.l
  8. zwyczaj budowania się do narzędzia> General-> Outputs->lexer.c
  9. zwyczaj budowania się do narzędzia> General-> Zależności dodatkowe>parser.y parser.c
  10. Zastosuj
  11. wybrać.Plik rw Solution Explorer
  12. konfiguracja> Wszystkie konfiguracje
  13. OGÓLNE-> Element Type> zwyczaj budowania Narzędzie
  14. Zastosuj
  15. zwyczaj budowania się do narzędzia> General-> Komenda Line->bison -oparser.c parser.y
  16. zwyczaj budowania się do narzędzia> General-> Outputs->parser.c parser.h

również trzeba mieć flex.exe, bison.exe i m4.exe w ścieżce wyszukiwania systemu. Inną wadą jest to, że VS nie uzyskuje właściwych zależności, więc gdy coś zmienisz w parserze lub plikach lexer, musisz ręcznie przebudować projekt.

+0

Czy jest to coś, co musisz ustawić przy każdym uruchomieniu nowego projektu za pomocą f/lex i/lub bison/yacc? Czy możesz ustawić go raz, a VS zapamięta ustawienia na zawsze i zawsze? Czy są też jakieś zalecane IDE do używania tych bibliotek? Robienie rzeczy z wiersza poleceń może czasami być denerwujące, kiedy musisz uruchomić f/lex i/lub bison/yacc, zanim będziesz mógł skompilować się z gcc. – velocirabbit

+1

@velocirabbit To ustawienie specyficzne dla projektu. Musisz więc skonfigurować go dla każdego pliku .l lub .y. – Rudi

Powiązane problemy