ZEKEGU1997 2018-11-04 15:17 采纳率: 0%
浏览 1086

LNK2019 2001无法解析的外部符号

试过把三个复制合并成一个CPP文件,调试没有问题,但是像这样分开来就不行

1>client.obj : error LNK2019: 无法解析的外部符号 "public: static void __cdecl client::changeserver(char)" (?changeserver@client@@SAXD@Z),该符号在函数 _main 中被引用
1>client.obj : error LNK2001: 无法解析的外部符号 "private: static int client::num" (?num@client@@0HA)
1>D:\VS2008\项目\client\Debug\client.exe : fatal error LNK1120: 2 个无法解析的外部命令          

 //client.h
 #ifndef __CLIENT_H__
#define __CLIENT_H__
#include<iostream>
using namespace std;
class client
{
private:
    static char servername;
    static int num;
    char name;
public:
    static void changeserver(char s);
    client(char n){name=n;num++;};
    static void shownum(){cout<<"there are "<<num<<" clients."<<endl;}
};
#endif

//源1.cpp
#include"client.h"
#include<iostream>
using namespace std;

char client::servername='a';
int client::num=0;
void client::changeserver(char s)
{
    servername=s;
    cout<<"the servername has been changed into "<<servername<<endl;
}

//client.cpp
#include"client.h"
#include<iostream>
using namespace std;

int main()
{
    client c('c');
    client::changeserver('a');
    client::shownum();
    return 0;
}

  • 写回答

2条回答 默认 最新

  • threenewbee 2018-11-04 15:25
    关注

    没有发现任何问题,你怎么编译的源代码。用的什么编译器。
    图片说明

    评论

报告相同问题?