错误未解析的外部符号和未解析的内部符号
Error unresolved externals and unresolved external symbol
我得到一个未解析外部错误LNK1120和错误LNK2019的错误:未解析外部符号"void __cdecl crt_acc(class std::basic_string,class std::allocater>*const,int)"(?crt_acc@@YAXQAV$basic_string@DU$char_traits@D@std@@V$allocator@D@2@@std@@H@Z)在函数_main C:\Users\user\documents\visual studio 2010\Projects\Programming Assignment\Progming Assignment.obj 中引用
我需要如何解决这个问题?突发事件
【更新代码在这里】
int main ()
{
//Declare Variable
string car_num[10], car_brand[50], car_model[50], car_colour[50], car_year[10], car_eng_cap[10], car_tran[10], car_cost[100];//string array for account information
string enter_acc_num,search_car;
int menu, cnt=0, check=0;
int menu2;
char selection;
start_menu();//Run the Start Menu Function
do
{
size_t count=0;//put into a loop to refresh back to 0 everytime
read_data_file(car_num, car_brand, car_model, car_colour, car_year, car_eng_cap, car_tran, car_cost);//Run read data file function (it update the array everytime when it in the loop)
for(size_t i=0; i<sizeof(car_num)/sizeof(*car_num); i++)//Small loop to identify the size of array car_num[10]
{
if(car_num[i]!="")
count++;
}
cnt=count;
system("cls");//Clear the screen
cout<<"ntMENU"<<endl;
cout<<"//////////////////////////////////////////////////"<<endl;
cout<<"nt01. tCREATE A NEW CAR ACCOUNT"<<endl;
cout<<"nt02. tEDIT A CAR ACCOUNT"<<endl;
cout<<"nt03. tREMOVE A CAR ACCOUNT"<<endl;
cout<<"nt04. tSEARCH A CAR "<<endl;
cout<<"nt05. tCHECK TOTAL INVENTORY"<<endl;
cout<<"nt06. tEXIT"<<endl;
cout<<"n\\\\\\\\\\\\\\\\\\\\\\\\\"<<endl;
cout<<"tSelect Your Option(1-6)";
cin>>menu; //User enter the selection (1-6)
system("cls");//Clear the screen
//Selection
switch(menu)
{
case 1://User has select option 1
{
crt_acc(car_num, cnt);//Pass to create account function
}
break;
case 2://User has select option 2
{
cout<<"nEnter car registration number:";
cin>>enter_acc_num; //Identify which account to be edited
check=enter_acc_num.length();
if(check<=8)
{
edit_account(enter_acc_num, car_num, car_brand, car_model, car_colour, car_year, car_eng_cap, car_tran, car_cost, cnt);//Pass to edit account function
}
else
cout<<"Please enter a valid car registration number."<<endl; //Inform user to enter a valid number
}
break;
case 3://User has select option 3
{
cout<<"nEnter car registration number:";
cin>>enter_acc_num;//Identify which account to be deleted
check=enter_acc_num.length();//Constraint for input
if(check<8)
{
for(int x=0; x<cnt; x++)
{
if(enter_acc_num==car_num[x])
{
cout<<"Are you sure want to remove the car account? (Y/N) "; //Ask user if really want to remove the account
cin>>selection;
switch(toupper(selection))
{
case'Y':
{
remove_account(enter_acc_num, car_num, car_brand, car_model, car_colour, car_year, car_eng_cap, car_tran, car_cost, cnt);//Pass to delete account function
cout<<"The Car Account successfully deleted."<<endl;
}
break;
case 'N':
{
cout<<"Operation has been canceled, back to menu screen."<<endl; //Nothing will happen if user choose no option for remove account
}
break;
}
}
}
}
else
cout<<"Please enter a valid car registration number!"<<endl; //Inform user to enter a valid number
}
break;
case 4: //Option 4
{
cout<<"Which field you want enter to search a car:"<<endl;//Ask user enter which field want to search car
cout<<"t01. Car Brand"<<endl;
cout<<"t02. Car Model"<<endl;
cout<<"t03. Year of Manufacturing"<<endl;
cout<<"t04. Price"<<endl;
cout<<"t05. Cancel"<<endl;
cout<<"Which Option (0-5)?"<<endl;
cin>>menu2;
switch(menu2)
{
case 1: //Option 1
{
cout<<"Enter Car Brand:"<<endl;
cin>>search_car; //Identify which car brand to be search
for(int x=0; x<cnt; x++) //Loop to last account, by using cnt we can stop when the array is a null
{
if(search_car==car_brand[x])//Detecting which car brand same as user input
{
cout<<"ntCar Registration Number:"<<car_num[x]<<endl;
cout<<"ntCar Make or Brand:"<<car_brand[x]<<endl;
cout<<"ntCar Model:"<<car_model[x]<<endl;
cout<<"ntCar Colour:"<<car_colour[x]<<endl;
cout<<"ntYear of Manufacturing:"<<car_year[x]<<endl;
cout<<"ntEngine Capacity:"<<car_eng_cap[x]<<"cc"<<endl;
cout<<"ntTransmission:"<<car_tran[x]<<endl;
cout<<"ntCost of Car: RM"<<car_cost[x]<<endl;
}
else
cout<<"No data is founded."<<endl;
break;
}
}
case 2: //Option 2
{
cout<<"Enter Car Model:"<<endl;
cin>>search_car; //Identify which car model to be search
for(int x=0 ; x<cnt ; x++)
{
if(search_car==car_model[x])//Detecting which car model same as user input
{
cout<<"ntCar Registration Number:"<<car_num[x]<<endl;
cout<<"ntCar Make or Brand:"<<car_brand[x]<<endl;
cout<<"ntCar Model:"<<car_model[x]<<endl;
cout<<"ntCar Colour:"<<car_colour[x]<<endl;
cout<<"ntYear of Manufacturing:"<<car_year[x]<<endl;
cout<<"ntEngine Capacity:"<<car_eng_cap[x]<<"cc"<<endl;
cout<<"ntTransmission:"<<car_tran[x]<<endl;
cout<<"ntCost of Car: RM"<<car_cost[x]<<endl;
}
else
cout<<"No data is founded."<<endl;
break;
}
}
case 3: //Option 3
{
cout<<"Enter Year of Manufacturing:"<<endl;
cin>>search_car;
for(int x=0; x<cnt; x++)
{
if(search_car==car_year[x])//Detecting which car manufacturing year same as user input
{
cout<<"ntCar Registration Number:"<<car_num[x]<<endl;
cout<<"ntCar Make or Brand:"<<car_brand[x]<<endl;
cout<<"ntCar Model:"<<car_model[x]<<endl;
cout<<"ntCar Colour:"<<car_colour[x]<<endl;
cout<<"ntYear of Manufacturing:"<<car_year[x]<<endl;
cout<<"ntEngine Capacity:"<<car_eng_cap[x]<<"cc"<<endl;
cout<<"ntTransmission:"<<car_tran[x]<<endl;
cout<<"ntCost of Car: RM"<<car_cost[x]<<endl;
}
else
cout<<"No data is founded."<<endl;
break;
}
}
case 4: //Option 4
{
cout<<"Enter Car Price:"<<endl;
cin>>search_car;
for(int x=0 ; x<cnt; x++)
{
if(search_car==car_cost[x])//Detecting which car price same as user input
{
cout<<"ntCar Registration Number:"<<car_num[x]<<endl;
cout<<"ntCar Make or Brand:"<<car_brand[x]<<endl;
cout<<"ntCar Model:"<<car_model[x]<<endl;
cout<<"ntCar Colour:"<<car_colour[x]<<endl;
cout<<"ntYear of Manufacturing:"<<car_year[x]<<endl;
cout<<"ntEngine Capacity:"<<car_eng_cap[x]<<"cc"<<endl;
cout<<"ntTransmission:"<<car_tran[x]<<endl;
cout<<"ntCost of Car: RM"<<car_cost[x]<<endl;
}
else
cout<<"No data is founded."<<endl;
break;
}
}
case 5: //Option 5
{
cout<<"Operation Canceled."<<endl;
break;
}
}
}
case 5: //Option 5
all_inventory(car_num, car_brand, car_model, car_colour, car_year, car_eng_cap, car_tran, car_cost,cnt);
break;
case 6: //Option 6
{
cout<<"nnGOOD BYE!";
break;
}
default:cout<<"a";
}
cin.ignore();
cin.get();
}while(menu!=6);
return 0;
}
[更新]
//Function Prototype (I put this between namespace and int main)
void start_menu();
void read_data_file(string a[], string b[], string c[], string d[], string e[], string f[], string g[], string h[]);
void crt_acc(string car_num[],int cnt);
void check_car_num(string car_num[], string &car_num1, int cnt);
void remove_account(string enter_acc_num, string car_num[], string car_brand[], string car_model[], string car_colour[], string car_year[], string car_eng_cap[], string car_train[], string car_cost[], int cnt);
void edit_account(string enter_acc_num, string car_num[], string car_brand[], string car_model[], string car_colour[], string car_year[], string car_eng_cap[], string car_tran[], string car_cost[], int cnt);
void all_inventory(string car_num[], string car_brand[], string car_model[], string car_colour[], string car_year[], string car_eng_cap[], string car_tran[], string car_cost[], int cnt);
[更新]
void crt_cc(string car_num[],int cnt) {
//Declare Variables
ofstream outfile;
string car_num1, car_year ,car_eng_cap, car_cost, car_model, car_brand, car_colour;
char car_tran;
check_car_num(car_num, car_num1, cnt);//Pass to check car registration number function
cout<<"ntEnter Car Make or Brand (Honda/Toyota/Proton/Perodua/Suzuki):";
cin>>car_brand;
cout<<"ntEnter Car Model :";
cin>>car_model;
cout<<"ntEnter Car Colour :";
cout<<"ntEnter Year of Manufacturing :";
cin>>car_year;
cout<<"ntEnter Engine Capacity(in CC) :";
cin>>car_eng_cap;
cout<<"ntEnter Car Tranmission (Auto(A)/Manual(M)):";
cin>>car_tran;
car_tran=toupper(car_tran);
cout<<"ntEnter Cost of the Car(RM) :";
cin>>car_cost;
cout<<endl;
cout<<"ntA Car Account Has Been Created. "<<endl;
cout<<"ntThe"<<car_brand<<car_model<<"has been created."<<endl;
//Write the new account data into file
outfile.open("caracc.txt",ios::app);
outfile<<car_num1<<endl;
outfile<<car_brand<<endl;
outfile<<car_model<<endl;
outfile<<car_colour<<endl;
outfile<<car_year<<endl;
outfile<<car_eng_cap<<endl;
outfile<<car_tran<<endl;
outfile<<car_cost<<endl;
outfile.close();//Close file
}
您没有显示下面语句中使用的函数crt_acc
的声明和定义位置
case 1://User has select option 1
{
crt_acc(car_num, cnt);//Pass to create account function
但您似乎没有在构建中包含定义函数的对象文件。
编辑:
当您更新代码时,现在可以看到您定义了函数
voidcrt_cc(字符串car_num[],int cnt)
但是调用函数
crt_acc(car_num,cnt);
我认为你的代码中有一个拼写错误。
相关文章:
- 将函数类成员映射到类本身内部
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 将无符号char*转换为std::istream*C++
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- vscode g++链路故障:体系结构x86_64的未定义符号
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- Boost Spirit,获取迭代器内部语义动作
- 为什么内部链接的名称会出现在我的目标文件的符号表中?
- 有符号整数溢出、内部函数和未定义的行为
- SSE2 内部函数 - 找到两个无符号短向量的最大值
- 从C++内部获取损坏的符号名称
- 有什么方法可以在内部镜像Microsoft的符号服务器吗?
- 内部和外部结构的符号冲突,C++ vs C
- C++中const的内部链接,但我得到了重复的符号
- GCC内部符号装饰有什么问题
- 错误未解析的外部符号和未解析的内部符号
- 符号查找错误时,使用我的Qt插件从共享库内部
- 如何在C++中安全地比较32位整数和64位整数,以及如何在内部比较带符号整数