x3fang_c 2023-05-25 17:27 采纳率: 8.7%
浏览 24

有个问题,如何解决?


\library\users.o    users.cpp:(.text+0x0): multiple definition of `nowtime()'
\main.o    main.cpp:(.text+0x0): first defined here
\library\users.o    users.cpp:(.text+0x3a7): multiple definition of `Gloip(std::string&)'
\main.o    main.cpp:(.text+0x3a7): first defined here
\library\users.o    users.cpp:(.text+0x4a4): multiple definition of `Glip(std::string&)'
\main.o    main.cpp:(.text+0x4a4): first defined here
\library\users.o    users.cpp:(.text+0x754): multiple definition of `gdp()'
\main.o    main.cpp:(.text+0x754): first defined here
\library\users.o    users.cpp:(.text+0x824): multiple definition of `logqz()'
\main.o    main.cpp:(.text+0x824): first defined here
\library\users.o    users.cpp:(.bss+0x0): multiple definition of `now'
\main.o    main.cpp:(.bss+0x0): first defined here
\library\users.o    users.cpp:(.bss+0x8): multiple definition of `t'
\main.o    main.cpp:(.bss+0x8): first defined here
\library\users.o    users.cpp:(.bss+0x40): multiple definition of `user'
\main.o    main.cpp:(.bss+0x40): first defined here
\library\admin.o    admin.cpp:(.text+0x0): multiple definition of `nowtime()'
\main.o    main.cpp:(.text+0x0): first defined here
\library\admin.o    admin.cpp:(.text+0x3a7): multiple definition of `Gloip(std::string&)'
\main.o    main.cpp:(.text+0x3a7): first defined here
\library\admin.o    admin.cpp:(.text+0x4a4): multiple definition of `Glip(std::string&)'
\main.o    main.cpp:(.text+0x4a4): first defined here
\library\admin.o    admin.cpp:(.text+0x754): multiple definition of `gdp()'
\main.o    main.cpp:(.text+0x754): first defined here
\library\admin.o    admin.cpp:(.text+0x824): multiple definition of `logqz()'
\main.o    main.cpp:(.text+0x824): first defined here
\library\admin.o    admin.cpp:(.bss+0x0): multiple definition of `now'
\main.o    main.cpp:(.bss+0x0): first defined here
\library\admin.o    admin.cpp:(.bss+0x8): multiple definition of `t'
\main.o    main.cpp:(.bss+0x8): first defined here
\library\admin.o    admin.cpp:(.bss+0x40): multiple definition of `user'
\main.o    main.cpp:(.bss+0x40): first defined here
\library\admin.o    admin.cpp:(.bss+0xa0): multiple definition of `admin'
\main.o    main.cpp:(.bss+0xa0): first defined here
\main.o    main.cpp:(.text+0x3e8): undefined reference to `__imp_WSAStartup'
\main.o    main.cpp:(.text+0x42d): undefined reference to `__imp_gethostname'
\main.o    main.cpp:(.text+0x445): undefined reference to `__imp_WSAGetLastError'
\main.o    main.cpp:(.text+0x457): undefined reference to `__imp_gethostbyname'
\main.o    main.cpp:(.text+0x477): undefined reference to `__imp_inet_ntoa'
\main.o    main.cpp:(.text+0x48f): undefined reference to `__imp_WSACleanup'
\main.o    main.cpp:(.text+0x582): undefined reference to `URLDownloadToFileA'
\main.o    main.cpp:(.text+0xa34): undefined reference to `l_d::F5_d()'
\main.o    main.cpp:(.text+0xa40): undefined reference to `l::F5()'
\main.o    main.cpp:(.text+0xa4c): undefined reference to `l_d::co_d()'
\main.o    main.cpp:(.text+0xa58): undefined reference to `l::co()'
\main.o    main.cpp:(.text+0xa64): undefined reference to `l_d::F5_d()'
\main.o    main.cpp:(.text+0xa70): undefined reference to `l::F5()'
\main.o    main.cpp:(.text+0xb31): undefined reference to `l::find(std::string)'
\main.o    main.cpp:(.text+0xc26): undefined reference to `l::user_w(std::string)'
\main.o    main.cpp:(.text+0xcc7): undefined reference to `l::user_w(std::string)'
\main.o    main.cpp:(.text+0xe14): undefined reference to `l_d::find_d(std::string)'
\main.o    main.cpp:(.text+0xf2b): undefined reference to `l_d::admin_w(std::string)'
\main.o    main.cpp:(.text+0xfcd): undefined reference to `l_d::admin_w(std::string)'
\library\users.o    users.cpp:(.text+0x3e8): undefined reference to `__imp_WSAStartup'
\library\users.o    users.cpp:(.text+0x42d): undefined reference to `__imp_gethostname'
\library\users.o    users.cpp:(.text+0x445): undefined reference to `__imp_WSAGetLastError'
\library\users.o    users.cpp:(.text+0x457): undefined reference to `__imp_gethostbyname'
\library\users.o    users.cpp:(.text+0x477): undefined reference to `__imp_inet_ntoa'
\library\users.o    users.cpp:(.text+0x48f): undefined reference to `__imp_WSACleanup'
\library\users.o    users.cpp:(.text+0x582): undefined reference to `URLDownloadToFileA'
\library\users.o    users.cpp:(.text+0xc73): undefined reference to `l::find(std::string)'
\library\users.o    users.cpp:(.text+0xd0c): undefined reference to `l::xgmm(std::string, std::string)'
\library\users.o    users.cpp:(.text+0xe5b): undefined reference to `l::find(std::string)'
\library\users.o    users.cpp:(.text+0x1180): undefined reference to `l::zx(std::string)'
\library\users.o    users.cpp:(.text+0x11bc): undefined reference to `l::find(std::string)'
\library\users.o    users.cpp:(.text+0x138d): undefined reference to `l::find(std::string)'
\library\admin.o    admin.cpp:(.text+0x3e8): undefined reference to `__imp_WSAStartup'
\library\admin.o    admin.cpp:(.text+0x42d): undefined reference to `__imp_gethostname'
\library\admin.o    admin.cpp:(.text+0x445): undefined reference to `__imp_WSAGetLastError'
\library\admin.o    admin.cpp:(.text+0x457): undefined reference to `__imp_gethostbyname'
\library\admin.o    admin.cpp:(.text+0x477): undefined reference to `__imp_inet_ntoa'
\library\admin.o    admin.cpp:(.text+0x48f): undefined reference to `__imp_WSACleanup'
\library\admin.o    admin.cpp:(.text+0x582): undefined reference to `URLDownloadToFileA'
\library\admin.o    admin.cpp:(.text+0xbfd): undefined reference to `l_d::find_d(std::string)'
\library\admin.o    admin.cpp:(.text+0xcb3): undefined reference to `l_d::xgmm_d(std::string, std::string)'
\library\admin.o    admin.cpp:(.text+0xdc4): undefined reference to `l_d::find_d(std::string)'
\library\admin.o    admin.cpp:(.text+0xe68): undefined reference to `l_d::nano(std::string, std::string)'
\library\admin.o    admin.cpp:(.text+0xf98): undefined reference to `l::find(std::string)'
\library\admin.o    admin.cpp:(.text+0x103c): undefined reference to `l::nano(std::string, std::string)'
\library\admin.o    admin.cpp:(.text+0x11d8): undefined reference to `l_d::find_d(std::string)'
\library\admin.o    admin.cpp:(.text+0x13be): undefined reference to `l::find(std::string)'
\library\admin.o    admin.cpp:(.text+0x1408): undefined reference to `l::user_w(std::string)'
\library\admin.o    admin.cpp:(.text+0x180d): undefined reference to `l::find(std::string)'
\library\admin.o    admin.cpp:(.text+0x1851): undefined reference to `l::rm(std::string)'
\library\admin.o    admin.cpp:(.text+0x19c9): undefined reference to `l_d::rm(std::string)'
\library\admin.o    admin.cpp:(.text+0x1a4c): undefined reference to `l_d::co_d()'
\library\admin.o    admin.cpp:(.text+0x1a58): undefined reference to `l::co()'
\library\admin.o    admin.cpp:(.text+0x1a64): undefined reference to `l_d::F5_d()'
\library\admin.o    admin.cpp:(.text+0x1a70): undefined reference to `l::F5()'
\library\admin.o    admin.cpp:(.text+0x1d90): undefined reference to `l_d::find_d(std::string)'
\library\admin.o    admin.cpp:(.text+0x1e86): undefined reference to `l_d::find_d(std::string)'
\library\admin.o    admin.cpp:(.text+0x1f19): undefined reference to `l_d::find_d(std::string)'
\library\admin.o    admin.cpp:(.text+0x20c7): undefined reference to `l_d::find_d(std::string)'
\collect2.exe    [Error] ld returned 1 exit status
25        \Makefile.win    recipe for target '登录系统.exe' failed

main.cpp:


#include<bits/stdc++.h>
#include <ctime>
#include <vector>
#include <winsock2.h>
#include<windows.h>
#include<time.h>
#include <fstream>
#include <direct.h>
#include <io.h>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <tchar.h>
#include <string>
#include <string.h>
//#include"测试.cpp"
#include <stdlib.h>
#include <Nb30.h>
#include <time.h>
#include <nb30.h>
#include<tchar.h>
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <Iphlpapi.h>
#include <stdio.h>
#include<conio.h> 
#include".\library\MD5.h"
#include".\library\admin.h"
#include".\library\users.h"
#include".\library\gyk.h"
#pragma comment(lib, "netapi32.lib")
#pragma comment(lib, "Netapi32.lib")
#define _CRT_SECURE_NO_DEPRECATE
using namespace std;
using std::cout; using std::cin;
using std::endl; using std::string;
using namespace std;
void gotoxy(int x,int y)//自己定义一个gotoxy,将光标跳到x列y行 
{   
   COORD c;     //定义一个光标类
   c.X = x - 1; //设置这个光标的位置
   c.Y = y - 1; 
   SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);   //调用WindowsAPI来设置光标位置
}
bool islogin=false;
int k_44;
bool islogina=false;
int k_44_a;
int main()
{
    admin.F5_d();
    user.F5();
    while(true)
    {
        admin.co_d();
        user.co();
        admin.F5_d();
        user.F5();
        string n;
        cin>>n;
        if(n=="login")
        {
            cout<<"账号:";
            string name_main;
            cin>>name_main;
            cout<<"密码:";
            string psd_main;
            cin>>psd_main;
            int k;
            k=user.find(name_main);
            if(k!=0)
            {
                if(user.psd[k]==psd_main)
                {
                    if(islogin)
                    {
                        user.flag[k_44]=false;
                        gotoxy(50,50);
                        cout<<"登录成功";
                        user.flag[k]=true;
                        islogin=true;
                        k_44=k; 
                        Sleep(5000);
                        system("cls");
                        user.user_w(user.name[k]);    
                    }
                    else
                    {
                        gotoxy(50,50);
                        cout<<"登录成功";
                        user.flag[k]=true;
                        islogin=true;
                        k_44=k; 
                        Sleep(5000);
                        system("cls");
                        user.user_w(user.name[k]);
                    }
                }
                else
                {
                    goto loginfail;
                }
            }
            else
            {
                goto loginfail;
            }
            loginfail:
                cout<<"用户名或密码错误";
                Sleep(5000);
                system("cls");
        }
        else if(n=="logins")
        {
            cout<<"指令不存在或错误"<<endl;
            cin>>n;
            if(n=="logins")
            {
                cout<<"账号:";
                string name_main;
                cin>>name_main;
                cout<<"密码:";
                string psd_main;
                cin>>psd_main;
                int k;
                k=admin.find_d(name_main);
                if(k!=0)
                {
                    if(admin.psd[k]==psd_main)
                    {
                        if(islogina)
                        {
                            if(islogin)
                            {
                                user.flag[k_44]=false;
                            }
                            admin.flag[k_44]=false;
                            gotoxy(50,50);
                            cout<<"登录成功";
                            admin.flag[k]=true;
                            islogina=true;
                            k_44_a=k; 
                            Sleep(5000);
                            system("cls");
                            admin.admin_w(admin.name[k]);    
                        }
                        else
                        {
                            gotoxy(50,50);
                            cout<<"登录成功";
                            admin.flag[k]=true;
                            islogina=true;
                            k_44_a=k; 
                            Sleep(5000);
                            system("cls");
                            admin.admin_w(admin.name[k]);
                        }
                    }
                    else
                    {
                        goto loginfail_2;
                    }
                }
                else
                {
                    goto loginfail_2;
                }
                loginfail_2:
                    cout<<"用户名或密码错误";
                    Sleep(5000);
                    system("cls");
            }
        }
    }
}

user.cpp:

#include"users.h" 
#pragma comment(lib, "netapi32.lib")
#pragma comment(lib, "Netapi32.lib")
#define _CRT_SECURE_NO_DEPRECATE
using namespace std;
void inits_user()
{
    user.psd=new string[10000003];
    user.name=new string[10000003];
    user.flag=new bool[10000003];
    user.log=new string[1000003];
    user.log_i=1;
}
void user_w(string name)
{
    system("cls");
    string n;
    while(true)
    {
        getline(cin,n);
        if(n=="Change psd"||n=="change psd")
        {
            string psd_y;
            cout<<"原密码:";
            cin>>psd_y;
            if(user.psd[user.find(name)]==psd_y)
            {
                cout<<"要修改的密码:";
                string psd;
                cin>>psd;
                user.xgmm(name,psd);
            }
            else
            {
                cout<<"密码错误"<<endl;
            }
        }
        else if(n=="Luser"||n=="luser"||n=="Login user"||n=="login user")
        {
            string name_130,psd_130;
            cout<<"账号:";
            cin>>name_130;
            cout<<"密码:";
            cin>>psd_130;
            int k=user.find(name_130);
            if(k!=0)
            {
                if(user.psd[k]==psd_130)
                {
                    user_w(name_130);
                    user.log[user.log_i]=logqz()+"有个用户登录了其他账号\n";
                    user.log_i++;
                }
                else
                {
                    goto loginfail;
                }
            }
            else
            {
                goto loginfail;
            } 
        }
        else if(n=="help")
        {
            cout<<"Change psd 修改密码"<<endl
                <<"Luser  登录其他账号"<<endl
                <<"exit    退出"<<endl;
        }
        else if(n=="exit")
        {
            return;
        }
        else
        {
            cout<<"不存在的指令\n输入help查看帮助";
        }
        loginfail:
            cout<<"用户名或密码错误";
            Sleep(5000);
            system("cls");
    }
}
int xgmm(string name,string psd)
{
    if(user.zx(name)==0)
    {
        int k;
        k=user.find(name);
        if(k!=0)
        {
            user.psd[k]=user.m.encode(psd);
            user.log[user.log_i]=logqz()+"有个用户修改了密码\n";
            user.log_i++;
            return 0;
        }
        else
        {
            return 1;
        }
    }
    return 2;
}
int zx(string name)
{
    int k=user.find(name);
    if(k>0&&user.flag[k])
    {
        return 0;
    }
    return 1;
}
void nano(string name,string psd)
{
    user.name[user.xl]=user.m.encode(name);
    user.psd[user.xl]=user.m.encode(psd);
    user.log[user.log_i]=nowtime()+"有个用户注册了\n";
    user.log_i++;
    user.xl++;
}
int find(string name)
{
    for(int i=1;i<=user.xl;i++)
    {
        if(user.name[i]==name)
        {
            return i;
        }
    }
    return 0;
}
void F5()
{
    int n=0,y=0,i=1;
    user.xl=1;
    ifstream in1,in2,in3;
    in1.open(".\\user\\name.txt",ios::in);
    in2.open(".\\user\\psd.txt",ios::in);
    while(!in1.eof()||!in2.eof()||!in3.eof())
    {
        char buffer[1024]={0};
        in1.getline(buffer,1024);
        user.name[i]=buffer;
        in2.getline(buffer,1024);
        user.psd[i]=buffer;
        i++;
        user.xl++;
    }
    in1.close();
    in2.close();
}
void co()
{
    int n=0,y=0,i=1;
    ofstream in1,in2;
    in1.open(".\\user\\name.txt",ios::out);
    in2.open(".\\user\\psd.txt",ios::out);
    for(int i=1;i<=user.xl;i++)
    {
        if(user.name[i]!="0")
        {
            in1<<user.name[i]<<endl;
            in2<<user.psd[i]<<endl;
        }
    }
    in1.close();
    in2.close();
}

admin.cpp:

#include"users.h"
#include"admin.h"
#pragma comment(lib, "netapi32.lib")
#pragma comment(lib, "Netapi32.lib")
#define _CRT_SECURE_NO_DEPRECATE
using namespace std;
void inits_admin()
{
    admin.psd=new string[10000003];
    admin.name=new string[10000003];
    admin.flag=new bool[10000003];
}
void admin_w(string name)
{
    system("cls");
    string n;
    while(true)
    {
        getline(cin,n);
        if(n=="Change psd"||n=="change psd")
        {
            string psd_y;
            cout<<"原密码:";
            cin>>psd_y;
            if(admin.psd[admin.find_d(name)]==psd_y)
            {
                cout<<"要修改的密码:";
                string psd;
                cin>>psd;
                admin.xgmm_d(name,psd);
            }
            else
            {
                cout<<"密码错误"<<endl;
            }
        }
        else if(n=="Radmin"||n=="radmin")
        {
            string name_78;
            cout<<"账号:";
            cin>>name_78;
            if(admin.find_d(name_78)!=0)
            {
                cout<<"已有账号"<<endl;
            }
            else
            {
                admin.nano(name_78,"1234567890");
                cout<<"管理员账号"<<name_78<<"已完成注册,默认密码:1234567890"<<endl;
            }
        }
        else if(n=="Ruser"||n=="ruser")
        {
            string name_91;
            cout<<"账号:";
            cin>>name_91;
            if(user.find(name_91)!=0)
            {
                cout<<"已有账号"<<endl;
            }
            else
            {
                user.nano(name_91,"1234567890");
                cout<<"普通账号"<<name_91<<"已完成注册,默认密码:1234567890"<<endl;
            }
        }
        else if(n=="Ladmin"||n=="ladmin"||n=="Login admin"||n=="login admin")
        {
            string name_106,psd_106;
            cout<<"账号:";
            cin>>name_106;
            cout<<"密码:";
            cin>>psd_106;
            int k=admin.find_d(name_106);
            if(k!=0)
            {
                if(admin.psd[k]==psd_106)
                {
                    admin_w(name_106);
                    cout<<"欢迎回来"<<endl;
                }
                else
                {
                    goto loginfail;
                }
            }
            else
            {
                goto loginfail;
            }
        }
        else if(n=="Luser"||n=="luser"||n=="Login user"||n=="login user")
        {
            string name_130,psd_130;
            cout<<"账号(管理登录普通账号不用密码):";
            cin>>name_130;
            int k=user.find(name_130);
            if(k!=0)
            {
                user.user_w(name_130);
                cout<<"欢迎回来"<<endl;
            }
            else
            {
                cout<<"无此账号"<<endl; 
            } 
        }
        else if(n=="log"||n=="Log")
        {
            bool isng=false;
            cout<<"桌面或命令行(0是桌面其他为命令行):";
            cin>>isng;
            if(isng)
            {
                for(int i=1;i<=user.log_i;i++)
                {
                    cout<<user.log[i]; 
                }
                cout<<"ok"<<endl;
            }
            else
            {
                string dep=gdp()+"log.txt";
                ofstream out;
                out.open(dep.c_str(),ios::out);
                for(int i=1;i<=user.log_i;i++)
                {
                    out<<user.log[i]; 
                }
                out.close();
                cout<<"ok"<<endl;
            }
        }
        else if(n=="help")
        {
            cout<<"change psd 修改密码"<<endl
                <<"luser   登录普通用户账号"<<endl
                <<"ladmin  登录其他管理用户账号"<<endl
                <<"ruser   注册普通用户账号"<<endl
                <<"radmin  注册管理用户账号"<<endl
                <<"log     查看日志"<<endl
                <<"exit    退出"<<endl;
        }
        else if(n=="exit")
        {
            return;
        }
        else if(n=="rm user")
        {
            string name_199;
            cout<<"账号:";
            cin>>name_199;
            if(user.find(name_199)!=0)
            {
                user.rm(name_199);
                cout<<"ok"<<endl;
            }
            else
            {
                cout<<"无此账号"<<endl; 
            }
        }
        else if(n=="rm me")
        {
            cout<<"为确保你的意识清醒下面请根据提示按对应的按键"<<endl;
            for(int i=1;i<=10;i++)
            {
                srand(time(0));
                int l=0+(int)10*rand()/(RAND_MAX+1),n_218;
                cout<<"请输入"<<l<<endl;
                cin>>n_218;
                if(i==10&&l==n_218)
                {
                    admin.rm(name);
                    return;
                }
                else if(l!=n_218)
                {
                    cout<<"已停止"<<endl;
                    break;
                }
            }
        }
        else if(n=="save")
        {
            admin.co_d();
            user.co();
            admin.F5_d();
            user.F5();
        }
        else
        {
            cout<<"不存在的指令\n输入help查看帮助";
        }
        loginfail:
            cout<<"用户名或密码错误";
            Sleep(5000);
            system("cls");
    }
}
void xgmm_d(string name,string psd)
{                   
    int k=admin.find_d(name);
    admin.psd[k]=admin.m.encode(psd);
}
int zx_d(string name)
{
    int k=admin.find_d(name);
    if(k>0&&admin.flag[k])
    {
        return 0;
    }
    return 1;
}
bool nano_d(string name,string psd)
{
    if(admin.find_d(name)==0)
    {
        admin.name[admin.xl]=admin.m.encode(name);
        admin.psd[admin.xl]=admin.m.encode(psd);
        admin.xl++;
        return true;
    }
    return false;
}
int rm(string name)
{
    int k=admin.find_d(name);
    if(k==0)
    {
        return 1;
    }
    admin.name[k]="0";
}
int find_d(string name)
{
    for(int i=1;i<=admin.xl;i++)
    {
        if(admin.name[i]==name)
        {
            return i;
        }
    }
    return 0;
}
void F5_d()
{
    int n=0,y=0,i=1;
    admin.xl=1;
    ifstream in1,in2;
    in1.open(".\\admin\\name.txt",ios::in);
    in2.open(".\\admin\\psd.txt",ios::in);
    while(!in1.eof()||!in2.eof())
    {
        char buffer[1024]={0};
        in1.getline(buffer,1024);
        admin.name[i]=buffer;
        in2.getline(buffer,1024);
        admin.psd[i]=buffer;
        i++;
        admin.xl++;
    }
    in1.close();
    in2.close();
}
void co_d()
{
    int n=0,y=0,i=1;
    ofstream in1,in2;
    in1.open(".\\admin\\name.txt",ios::out);
    in2.open(".\\admin\\psd.txt",ios::out);
    for(int i=1;i<=user.xl;i++)
    {
        if(admin.name[i]!="0")
        {
            in1<<admin.name[i]<<endl;
            in2<<admin.psd[i]<<endl;
        }
    }
    in1.close();
    in2.close();
}


  • 写回答

2条回答 默认 最新

  • Loup&卡普 2023-05-25 20:13
    关注

    multi definition 是多重定义 应该是有同名函数 多处定义
    undefined reference 表示没有找到实现 可能没有链接库 或者 makefile cpp没写对

    评论

报告相同问题?

问题事件

  • 创建了问题 5月25日

悬赏问题

  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开