错误未解析的外部符号和未解析的内部符号

Error unresolved externals and unresolved external symbol

本文关键字:符号 内部 外部 错误      更新时间:2023-10-16

我得到一个未解析外部错误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);

我认为你的代码中有一个拼写错误。