I’m trying to compile someone else’s C++ code. I have 0 experience with C++ myself. I’m using g++ on a MAC to compile one of the .cpp files that I received. When I do g++ main.cpp I get an Undefined symbols error. When googling the answers seem to be about a wrong link between files, but I don’t know how to link files.
How can I get the file to compile? I pasted the full code below.
Undefined symbols:
"initializeFitness()", referenced from:
runEvolution() in ccZXBTDH.o
"Grid::GetNeighbourhood(int, int, std::vector<Agent**, std::allocator<Agent**> >&)", referenced from:
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
"Grid::Grid()", referenced from:
runEvolution() in ccZXBTDH.o
"Reaper::GetAgentToKill()", referenced from:
runEvolution() in ccZXBTDH.o
"Cupid::GetRandomBreeder()", referenced from:
runEvolution() in ccZXBTDH.o
"Reaper::Select()", referenced from:
runEvolution() in ccZXBTDH.o
"Grid::~Grid()", referenced from:
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
"Breeder::Breed(Agent**, Agent**)", referenced from:
runEvolution() in ccZXBTDH.o
"Cupid::Select()", referenced from:
runEvolution() in ccZXBTDH.o
"Cupid::GetEmptyCell()", referenced from:
runEvolution() in ccZXBTDH.o
"Agent::GetType()", referenced from:
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
"Breeder::ProcessNeighbourhood(std::vector<Agent**, std::allocator<Agent**> > const&)", referenced from:
runEvolution() in ccZXBTDH.o
"FateAgent::GetGenome(double*)", referenced from:
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
"Cupid::GetParents()", referenced from:
runEvolution() in ccZXBTDH.o
"Agent::IncreaseAge()", referenced from:
runEvolution() in ccZXBTDH.o
"Grid::GetAgent(int, int)", referenced from:
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
"FateAgent::GetSelectedCount()", referenced from:
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
"Breeder::GetGenome(double*)", referenced from:
runEvolution() in ccZXBTDH.o
"Agent::GetFitness()", referenced from:
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
runEvolution() in ccZXBTDH.o
"Agent::~Agent()", referenced from:
runEvolution() in ccZXBTDH.o
"Grid::DoMovement()", referenced from:
runEvolution() in ccZXBTDH.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
I think you are trying to compile only a part of the entire program. Try
g++ *.cppIf it still doesnt work, It may be because your program needs an external library.