Sign in to follow this  
shadowfire36

help debug linker errors

Recommended Posts

i got my code to finally compile but, now im getting 5 linker errors that i have no idea why im throwing them the errors are:
[source=cpp]
football.obj : error LNK2019: unresolved external symbol "public: void __thiscall Football::SearchMatches(struct Match * * const,int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int)" (?SearchMatches@Football@@QAEXQAPAUMatch@@HV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) referenced in function "public: void __thiscall Football::RunFootball(void)" (?RunFootball@Football@@QAEXXZ)
football.obj : error LNK2019: unresolved external symbol "public: void __thiscall Football::ReadLastSearchWord(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,int &)" (?ReadLastSearchWord@Football@@QAEXAAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAH@Z) referenced in function "public: void __thiscall Football::RunFootball(void)" (?RunFootball@Football@@QAEXXZ)
football.obj : error LNK2019: unresolved external symbol "public: void __thiscall Football::SearchMatches(struct Match * * const,int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?SearchMatches@Football@@QAEXQAPAUMatch@@HV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function "public: void __thiscall Football::RunFootball(void)" (?RunFootball@Football@@QAEXXZ)
football.obj : error LNK2019: unresolved external symbol "public: void __thiscall Football::WriteLastSearchWord(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?WriteLastSearchWord@Football@@QAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function "public: void __thiscall Football::RunFootball(void)" (?RunFootball@Football@@QAEXXZ)
D:\Documents and Settings\shadowfire36\Desktop\whochamp_do_not _edit\ed2\whos_the champ\Debug\whos_the champ.exe : fatal error LNK1120: 4 unresolved externals

here is new code and header football.h
[source=cpp]
#ifndef FOOTBALL_H
#define FOOTBALL_H


#include <iostream>
#include <fstream>
#include <string>
#include "Message.h"


using namespace std;

// definition of strct that will hold all information of match
struct Match
{
	string Season;
	string Team1;
	string Team2;
	string Result;
};



class Football : public Message  
{ 
public:

	void WriteLastSearchWord(string word);
	void ReadLastSearchWord(string &team, int &record);
	void SearchMatches(Match *matches[],int size,string TeamName);
	void SearchMatches(Match *matches[],int size,string TeamName, int record);
	void  RunFootball();
	Football(string *footBallData);


	
	


	
protected:	
	
	string &footBallSave;
	string team;
	
	


};

#endif 

football.cpp
[source=cpp]
 #include <iostream>
#include <fstream>
#include <string>
#include "Football.h"
#include "Message.h"


using namespace std;



//Search within array of matches and display the results
void SearchMatches(Match* matches,int size,string TeamName)
{
	//declare the result array
	Match SearchResult[2000];
	//initalize the result counter
	int SearchResultCount=0;

	int SelectedNumber;

	//search within the matches array
	for(int i=0;i<size;i++)
	{
		//check if the entered name is the team1 or team2 in the match
		if(matches[i].Team1==TeamName || matches[i].Team2==TeamName)
			{
				//update the search result counter
				SearchResultCount++;
				//display the seasons
				cout<<endl<<"("<<SearchResultCount<<") "<<matches[i].Season;
				//store the matched match in the search result array
				SearchResult[SearchResultCount] = matches[i];
			}
	}
	cout << endl;

	//check for results
	if(SearchResultCount>0)
	{
		cout << "which year would you like to view results "<<endl;
		cin>>SelectedNumber;

		SelectedNumber;
		
	ofstream myfile;
	myfile.open("nflSave.txt",ios::app);
	myfile << endl << SelectedNumber;
	myfile.close();
		
		//display the match information
		cout<<SearchResult[SelectedNumber].Season<<endl;
		cout<<SearchResult[SelectedNumber].Team1<<endl;
		cout<<"Over"<<endl;
		cout<<SearchResult[SelectedNumber].Team2<<endl;
		cout<<SearchResult[SelectedNumber].Result<<endl;
	}
	else cout<<"No search result";
	cout<<endl;
}
void SearchMatches(Match* matches,int size,string TeamName, int record)
{
	//declare the result array
	Match SearchResult;
	//initalize the result counter
	int SearchResultCount=0;

	//int SelectedNumber;

	//search within the matches array
	for(int i=0;i<size;i++)
	{
		//check if the entered name is the team1 or team2 in the match
		if(matches[i].Team1==TeamName || matches[i].Team2==TeamName)
			{
				//update the search result counter
				SearchResultCount++;
				if (SearchResultCount == record)
				{
					//store the 
				//display the seasons
				//cout<<endl<<"("<<SearchResultCount<<") "<<matches[i].Season;
				
			     //store the matched match in the search result array
				SearchResult = matches[i];
					break;
				}
			}
	}
	cout<<endl;

	//check for results
	if(SearchResultCount>0)
	{
		//display the match information
		cout<<SearchResult.Season<<endl;
		cout<<SearchResult.Team1<<endl;
		cout<<"Over"<<endl;
		cout<<SearchResult.Team2<<endl;
		cout<<SearchResult.Result<<endl;
	}
	else cout<<"No search result";
	cout<<endl;
}

// This function is used for storing the last search keyword entered to the recallteam.txt
void WriteLastSearchWord(string word)
{
	ofstream myfile;
    myfile.open("nflSave.txt");
    myfile << word;
    myfile.close();
}

// This function is used for read the last search keyword enter from the recallteam.txt
void ReadLastSearchWord(string &team, int &record)
{
	ifstream inFile("nflSave.txt");
	getline(inFile, team);
	inFile >> record;
	inFile.close();
}



void Football::RunFootball()
{	
	
	ifstream inFile("nfl.txt");
	//initailze the matches ( array of strcuts )
	Match *matches[2000];

	// create input stream for file
	

	//It will holds the read lines from the file
	string Buffer;

	// check if the file is exist 
	if(!inFile.is_open())
	{
		//display the error message
		//cout<<"Failed to open file"<<endl;
		cerr << " File is Missing";
	}

	// initalize the counter
	int matchesCounter=0;
	while(!inFile.eof())
	{                                        //&Match::operator =(const Match &)
		//read season
		matches[matchesCounter] = new Match;
		getline(inFile,Buffer);
		matches[matchesCounter]->Season = Buffer;
		//read team1 name
		getline(inFile,Buffer);
		matches[matchesCounter]->Team1  = Buffer;
		//read the "over" string
		getline(inFile,Buffer);
		//read team2 name
		getline(inFile,Buffer);
		matches[matchesCounter]->Team2 = Buffer;
		//read result
		getline(inFile,Buffer);
		matches[matchesCounter]->Result = Buffer;
		//read the empty line
		getline(inFile,Buffer);
		//update the matches counter
		matchesCounter++;
	}

	
	//its used for Main menu selection
	char Check='1';

	while(Check !='3')
	{
		//Display the main menu
	
		cin>>Check;
    
		switch(Check)
		{
			//Search 
		case '1':
			{
				string TeamName="";
				
				getline(cin,TeamName);
				system("cls");
				cout << "Please Enter Team City And Team Name" <<endl;
				getline(cin,TeamName);//free's buffer
				WriteLastSearchWord(TeamName);
				SearchMatches(matches,matchesCounter,TeamName);
				break;
			}
			//Display the last search team
		case '2':
			{
				string team;
				int record;
				ReadLastSearchWord(team, record);
				system("cls");
				cout << "Last Recorded Viewed" <<endl;
				SearchMatches(matches,matchesCounter ,team , record);
	           
				break;
			}
			//Exit the program
		case '3':
			{
				exit(0);
			}
		default:continue;
		
		}
	}
}

Share this post


Link to post
Share on other sites
In football.cpp you forgot to prefix some of your functions with the class name and scope resolution operator.

For example this:

void SearchMatches(Match* matches,int size,string TeamName, int record)
{
...
}

Should be this:

void Football::SearchMatches(Match* matches,int size,string TeamName, int record)
{
...
}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this