I'm trying to build a project which contains main.cxx Control.cxx Control.hxx Event.cxx and Event.hxx, but it says:
Undefined Symbols for architecture x86_64
"Control::LoadDataFile()", referenced from:
_main in main.cxx.o
"Control::Control(char const*)", referenced from:
_main in main.cxx.o
"Control::~Control()", referenced from:
_main in main.cxx.o
when I try to make install. Here are my codes: main.cxx inside timeline/app
#include<iostream>
#include"Control.hxx"
#include"Event.hxx"
int main(){
Control usage;
usage.LoadDataFile();
return 0;
}
Control.cxx inside timeline/src
#include<iostream>
#include<fstream>
#include<vector>
#include<algorithm>
#include"Control.hxx"
#include"Event.hxx"
Control::Control(char const* InputDataFile)
:DataFile(InputDataFile)
{
std::cout<<"Welcome to timeline searching system"<<endl;
}
Control::~Control(){
}
void Control::LoadDataFile(){
std::cout<<"Loading data file..."<<endl;
ifstream input_file(DataFile);
while(getline(input_file,line)){
line>>Year>>Month>>Day>>Name>>Content;
Event* event = new Event(Year, Month, Day, Name, Content);
Events.push_back(event);
}
std::cout<<"Loaded all data"<<endl;
}
void Control::CreateEvent(){
}
void Control::DeleteEvent(){
}
void Control::DisplayEvents(){
if(!Events) std::cout<<"Can not find events!"<<endl;
for(std::vector<Evnet*>::iterator ev_iter = Events.begin();
ev_iter != Events.end(); ++ev_iter){
std::cout<<ev_iter->Get("Year")<<"."<<ev_iter->Get("Month")<<"."<<ev_iter->Get("Day")<<": with"<<ev_iter->Get("Name")<<endl;
std::cout<<ev_iter->Get("Content")<<endl;
}
std::cout<<"All events have been displayed."<<endl;
}
void Control::SearchEvent(){
}
Control.hxx inside timeline/src
#include<vector>
#include"Event.hxx"
class Control {
public:
Control(char const* = "../input/timeline.txt");
~Control();
void LoadDataFile();
void CreateEvent();
void DeleteEvent();
void DisplayEvents();
void SearchEvent();
private:
char* DataFile;
std::vector<Event*> Events;
};
Event.cxx inside timeline/src
#include"Event.hxx"
Event::Event(int const InputYear, int const InputMonth, int const InputDay, char const* InputName, char const* InputContent)
:Year(InputYear), Month(InputMonth), Day(InputDay), Content(InputContent), Name(InputName)
{
}
Event::~Event(){
}
Event.hxx inside timeline/src
ifndef Event_hxx_
#define Event_hxx_
template <typename Type>
Type const& Get(Type const& value)
{
return value;
}
class Event {
public:
Event(int const* InputYear, int const* InputMonth, int const* InputDay, char const* InputName, char const* InputContent);
~Event();
private:
int Year;
int Month;
int Day;
std::string Content;
std::string Name;
template <typename Type> friend Type const& Get(Type const& value);
};
#endif
And finally the CMakeLists.txt at source directory
cmake_minimum_required(VERSION 3.3 FATAL_ERROR)
project(TimeLine_Searching_System)
#add source directory
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)
add_executable(TimeLine_Searching_System app/main.cxx)
#target_link_libraries(TimeLine_Searching_System PUBLIC src)
target_include_directories(TimeLine_Searching_System PUBLIC
"${PROJECT_BINARY_DIR}"
"${PROJECT_SOURCE_DIR}/src"
)
install(TARGETS TimeLine_Searching_System DESTINATION bin)
Could some one tell me what I did wrong? I'm really a noob.
Aucun commentaire:
Enregistrer un commentaire