2017-12-05 3 views
-5

C++ code of my compiler Es gibt nur eine CPP-Datei in meinem Win32-Konsolenprojekt. Ich stehe vor diesen LNK-Kompilierungsfehlern in meinem Code. Ich arbeite an Visual Studio 12. Ich habe viele Dinge ausprobiert, aber nichts scheint mein Problem gelöst zu haben.Linker-Fehler LNK2019 und LNK1120 im einzelnen Dateicode

Ich schreibe Code für einen Compiler, der ursprünglich in Java erstellt wurde, und jetzt besteht die Aufgabe darin, es in C++ zu konvertieren. Ich freue mich auf einige nützliche Lösungen. Kann mir jemand bei dieser Aufgabe helfen?

Error Message

+6

Sie müssen wirklich den Text der tatsächlichen Fehlermeldungen kopieren und einfügen, damit wir genau sehen können, was es sagt. –

+1

Hier ist die Dokumentationsseite für LNK2019 und LNK1120: https://msdn.microsoft.com/en-us/library/799kze2z.aspx https://msdn.microsoft.com/en-us/library/z98k84c3.aspx –

+0

Es gibt viele Fehler. 1) main gibt nicht void zurück 2) du hast lex() nirgendwo definiert 3) 'out_parser <"Fehler nicht aufgetreten \ n"; 'und' out_parser <"Fehler aufgetreten \ n"; 'sind nicht gültig (es sollte '<<') sein –

Antwort

1

Vom documentation:

nicht aufgelösten externen Symbol 'Symbol' bezeichnete in der Funktion 'Funktion'

Der kompilierte Code für die Funktion eine Referenz macht oder Symbol nennen, aber Dieses Symbol ist in keiner der für den Linker angegebenen Bibliotheken oder Objektdateien definiert.

Diese Fehlermeldung wird von einem schwerwiegenden Fehler LNK1120 gefolgt. Sie müssen alle LNK2001- und LNK2019-Fehler beheben, um den Fehler LNK1120 zu beheben.

Sie verweisen auf etwas, das nicht in der Datei enthalten ist, mit der Sie nicht verlinken.

1

Der bestimmte Fehler im Screenshot sagt, dass die string terminalEP(void) Funktion aus der terminalP Funktion existiert nicht genannt zu werden - und es ist wahr, weil Ihre terminalEP Funktion als string terminalEP(string str) aber die Linie, die sie von der terminalP Funktion aufruft, ist s=terminalEP();

definaed ist

Sie müssen einen Parameter an die Funktion terminalEP übergeben, oder Sie müssen den Parameter für die Funktion terminalEP auf einen Standardwert setzen.

Verwandte Themen