LNK2019
-
Hiho,
ich habe folgenden Code:
#include <iostream> #include <conio.h> #include <Windows.h> using namespace std; #pragma comment (lib, "winmm.lib") //Funktionsprotoytpen // int Spielen (int Level); int WaehleLevel (int Level); int TesteHighscore (int Punkte, int Highscore); void ZeigeInfos (); //Hauptprogramm // int main () { //Variablen // char Auswahl; //Menüpunkt int Level = 5; //Aktueller Level int Highscore = 100; //Aktueller Highscore //Zufallsgenerator intialisieren srand (timeGetTime () ); //Verarbeitung des Menü's // do { //Menü ausgeben // cout <<" Zahlen raten - Menue" << endl; cout <<"---------------------" << endl; cout <<"(N)eues Spiel starten" << endl; cout <<"(L)evel auswaehlen " << endl; cout <<"(H)ighscore anzeigen " << endl; cout <<"(I)nfo " << endl; cout <<"(B)eenden\n\n "; //Eingabe abfragen // cout <<"Auswahl: "; cin >> Auswahl; //Je nach Eingabe verzweigen // switch (Auswahl) { //Neues Spiel starten ?! // case ('n'): case ('N'): { //Spielen // int Punkte; Punkte = Spielen (Level); Highscore = TesteHighscore (Punkte, Highscore); } break; //Level wählen // case ('l'): case ('L'): { Level = WaehleLevel (Level); } break; //Highscore anzeigen // case ('h'): case ('H'): { cout <<"\nDer aktuelle Highscore liegt bei "; cout << Highscore <<" Punkten\n\n"; } break; //Informationen anzeigen // case ('i'): case ('I'): { ZeigeInfos (); } break; //Spiel beenden ?! // case ('b'): case ('B'): { cout <<"Spiel beendet." << endl; } break; //Falsche Eingabe // default: { cout <<"Falsche Eingabe!\n\n"; } } } while (Auswahl != 'b' && Auswahl != 'B'); //Spiel beenden ? cout <<" Bis zum nächsten Mal" << endl; _getch (); return 0; } //main //ZeigeInfos // // Aufgabe: Informationen zum Spiel anzeigen // void ZeigeInfos () { cout <<"Zahlenraten V1.0" << endl; cout <<"Beispiel aus \"C++ fuer Spieleprogrammierer\""; cout <<"\n\n"; } //ZeigeInfos //WaehleLevel // //Aufgabe: Neuen Level auswählen // int WahleLevel (int Level) { int NeuerLevel; do { //Neuen Level auswählen // cout <<"Aktueller Level: " << Level << endl; cout <<"Neuer Level (1-10): "; cin >> NeuerLevel; //Ungültigen Level gewählt ?! // if (NeuerLevel < 1 || NeuerLevel > 10) { //Fehlermeldung ausgeben // cout <<" Ungültiger Levelwert." << endl; } } while (NeuerLevel < 1 || NeuerLevel > 10); //Gewählten Level zurückgeben // return NeuerLevel; } //Spielen // //Aufgabe: Das eigentlich Spiel spielen // int Spielen (int Level) { int Zufallszahl; //Zufallszahl, die erraten werden muss int GerateneZahl = 0; //Zahl die geraten wurde int Bereich = Level*10; //Bereich d. Zufallszahl int Versuche = 0; //Anzahl d. bisherigen Versuche int Punkte = 0; //Punktzahl //Zufallszahl ermitteln Zufallszahl = (rand () %Bereich)+1; //bereich ausgeben in dem geraten wird // cout <<"\n Die gesuchte Zahl liegt zwischen 1 und "; cout << Bereich << endl; //So lange raten, bis die Zahl gefunden wurde // while (GerateneZahl != Zufallszahl) { cout <<"Dein Tipp: "; cin>> GerateneZahl; Versuche++; //zahl falsch, also Hinweis ausgeben // if (GerateneZahl < Zufallszahl) cout <<" Die gesuchte Zahl ist größer." << endl; if (GerateneZahl > Zufallszahl) cout <<" Die gesuchte Zahl ist kleiner." << endl; } //Die Zahl wurde erraten // cout <<" \nGeschafft !" << endl; cout <<" Du haste die Zahl nach " << Versuche; cout <<" Versuchen erraten ! \n\n"; //Punkte brechnen //Desto weniger Versuche und desto höher das Level //Desto mehr Punkte werden vergeben Punkte = Bereich - Versuche + 1; Punkte *= Level; //Wenn mehr Versuche benötigt wurden als es Zahlen gibt, //kann das Ergebnis negativ sein. // if (Punkte < 0) Punkte = 0; //Punkte ausgeben cout <<"Punkte: " << Punkte << endl; //Punkte zurückgeben return Punkte; } //Spielen //Teste Highscore // //Aufgabe: Prüfe ob der Highscore geknackt wurde // int TesteHighscore (int Punkte, int Highscore) { //Prüfen ob der Highscore geknackt wurde // if (Punkte > Highscore) { cout <<" Glueckwunsch. Nuer Highscore!\n\n"; Highscore = Punkte; } else { cout <<" Highscore wurde nicht geknackt!\n\n"; } //Highscore zurückgeben return Highscore; }
Und folgendes Problem:
Zahlen_raten.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""int __cdecl WaehleLevel(int)" (?WaehleLevel@@YAHH@Z)" in Funktion "_main".
Habe schon rumprobiert bis zum geht nicht mehr (Auch makiert und F1 gedrückt ;)), aber keine Lösung gefunden, wäre nett, wenn mir hier jmd. helfen könnte.
Schonmal Danke für evtl. Antworten.
-
Ist
WaehleLevel()
wirklich in der selben .cpp Datei wiemain()
?
-
Du hast in Zeile 13 eine Funktion "WaehleLevel()" deklariert (die auch von main genutzt wird), aber später wird nur eine "WahleLevel()" definiert (Zeile 134 - das fehlende e macht einen gewaltigen Unterschied aus).