首页 文章

错误未解析的外部和未解析的外部符号[重复]

提问于
浏览
-3

这个问题在这里已有答案:

我得到一个错误的未解析的外部错误LNK1120和错误LNK2019:未解析的外部符号“void __cdecl crt_acc(class std :: basic_string,class std :: allocator> * 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 \ Programming Assignment中引用\ Programming 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<<"\n\tMENU"<<endl;
        cout<<"//////////////////////////////////////////////////"<<endl;
        cout<<"\n\t01. \tCREATE A NEW CAR ACCOUNT"<<endl;
        cout<<"\n\t02. \tEDIT A CAR ACCOUNT"<<endl;
        cout<<"\n\t03. \tREMOVE A CAR ACCOUNT"<<endl;
        cout<<"\n\t04. \tSEARCH A CAR "<<endl;
        cout<<"\n\t05. \tCHECK TOTAL INVENTORY"<<endl;
        cout<<"\n\t06. \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<<"\n\tCar Registration Number:"<<car_num[x]<<endl;
                                cout<<"\n\tCar Make or Brand:"<<car_brand[x]<<endl;
                                cout<<"\n\tCar Model:"<<car_model[x]<<endl;
                                cout<<"\n\tCar Colour:"<<car_colour[x]<<endl;
                                cout<<"\n\tYear of Manufacturing:"<<car_year[x]<<endl;
                                cout<<"\n\tEngine Capacity:"<<car_eng_cap[x]<<"cc"<<endl;
                                cout<<"\n\tTransmission:"<<car_tran[x]<<endl;
                                cout<<"\n\tCost 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<<"\n\tCar Registration Number:"<<car_num[x]<<endl;
                                cout<<"\n\tCar Make or Brand:"<<car_brand[x]<<endl;
                                cout<<"\n\tCar Model:"<<car_model[x]<<endl;
                                cout<<"\n\tCar Colour:"<<car_colour[x]<<endl;
                                cout<<"\n\tYear of Manufacturing:"<<car_year[x]<<endl;
                                cout<<"\n\tEngine Capacity:"<<car_eng_cap[x]<<"cc"<<endl;
                                cout<<"\n\tTransmission:"<<car_tran[x]<<endl;
                                cout<<"\n\tCost 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<<"\n\tCar Registration Number:"<<car_num[x]<<endl;
                                cout<<"\n\tCar Make or Brand:"<<car_brand[x]<<endl;
                                cout<<"\n\tCar Model:"<<car_model[x]<<endl;
                                cout<<"\n\tCar Colour:"<<car_colour[x]<<endl;
                                cout<<"\n\tYear of Manufacturing:"<<car_year[x]<<endl;
                                cout<<"\n\tEngine Capacity:"<<car_eng_cap[x]<<"cc"<<endl;
                                cout<<"\n\tTransmission:"<<car_tran[x]<<endl;
                                cout<<"\n\tCost 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<<"\n\tCar Registration Number:"<<car_num[x]<<endl;
                                cout<<"\n\tCar Make or Brand:"<<car_brand[x]<<endl;
                                cout<<"\n\tCar Model:"<<car_model[x]<<endl;
                                cout<<"\n\tCar Colour:"<<car_colour[x]<<endl;
                                cout<<"\n\tYear of Manufacturing:"<<car_year[x]<<endl;
                                cout<<"\n\tEngine Capacity:"<<car_eng_cap[x]<<"cc"<<endl;
                                cout<<"\n\tTransmission:"<<car_tran[x]<<endl;
                                cout<<"\n\tCost 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<<"\n\nGOOD 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<<"\n\tEnter Car Make or Brand (Honda/Toyota/Proton/Perodua/Suzuki):";

cin>>car_brand;

cout<<"\n\tEnter Car Model :";

cin>>car_model;

cout<<"\n\tEnter Car Colour :";

cout<<"\n\tEnter Year of Manufacturing :";

cin>>car_year;

cout<<"\n\tEnter Engine Capacity(in CC) :";

cin>>car_eng_cap;

cout<<"\n\tEnter Car Tranmission (Auto(A)/Manual(M)):";

cin>>car_tran;

car_tran=toupper(car_tran);

cout<<"\n\tEnter Cost of the Car(RM) :";

cin>>car_cost;

cout<<endl;

cout<<"\n\tA Car Account Has Been Created. "<<endl;

cout<<"\n\tThe"<<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
}

1 回答

  • 2

    您没有显示声明和定义下面的语句中使用的函数 crt_acc

    case 1://User has select option 1
            {
            crt_acc(car_num, cnt);//Pass to create account function
    

    但似乎你没有在构建中包含定义函数的目标文件 .

    EDIT:

    当您更新代码时,现在可以看到您定义了函数

    void crt_cc (string car_num [],int cnt)

    但是呼叫功能

    crt_acc (car_num,cnt);

    我认为您的代码中存在拼写错误 .

相关问题