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个回答

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

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复qq_43533956: 你的代码没有用到任何高级的语法,应该是你项目结构或者编译设置的问题,建议你新开一个新的项目再试试看
大约一年之前 回复
qq_43533956
qq_43533956 用的visual c++2008,是不是这个版本太老了
大约一年之前 回复

如果只声明了类函数,并没有定义函数内容,就会出现这样的报错

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问