C++ error LNK2019: 无法解析的外部符号(在线等)

############################
employee.h
############################
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
class Employee
{
private:
char name[10];
float salary;
public:
Employee(char nm[], float slr);
void display();
};
#endif
############################
employee.cpp
############################
#include <iostream>
#include <cstring>
#include "employee.h"

using namespace std;

Employee::Employee(char nm[], float slr){
strcpy(name, nm);
salary = slr;
}

void Employee::display(){
cout << "名称:" << name << endl;
cout << "工资:" << salary << endl;
}
############################
test.cpp
############################
#include "employee.h"

void main(){
Employee e("Jim", 3000.00);
e.display();
}
############################
出错
############################
testEmployee.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall Em
ployee::display(void)" (?display@Employee@@QAEXXZ),该符号在函数 _main 中被引用
testEmployee.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Employe
e::Employee(char * const,float)" (??0Employee@@QAE@QADM@Z),该符号在函数 _main
中被引用
testEmployee.exe : fatal error LNK1120: 2 个无法解析的外部命令

我这里编译连接楼主的代码是没有问题的。
我的编译环境是visual studio 2005,建的win32 console application项目。
不知楼主用的什么编译环境。

楼主的代码中有一些最好改一下:
############################
employee.h
############################
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
class Employee
{
private:
char name[10];
float salary;
public:
Employee(const char *nm, const float slr); // 参数的写法改一下
void display();
};
#endif

############################
employee.cpp
############################
#include <iostream>
#include <cstring>
#include "employee.h"

using namespace std;

Employee::Employee(const char *nm, const float slr){ // 参数写法改一下
strcpy(name, nm);
salary = slr;
}

void Employee::display(){
cout << "名称:" << name << endl;
cout << "工资:" << salary << endl;
}

main函数不变。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-27
不是吧,为什么我复制过来是正确的!一般出现上述的错误是有函数你只给了声明而没有去实现。你检查一下,display()和Employee(char *, float)是否写了函数体。

C++ error LNK2019: 无法解析的外部符号(在线等)
employee.h ifndef EMPLOYEE_H define EMPLOYEE_H class Employee { private:char name[10];float salary;public:Employee(const char *nm, const float slr); \/\/ 参数的写法改一下 void display();};endif employee.cpp include <iostream> include <cstring> include "employee.h"using namespace...

为什么c++无法解析外部的符号?
无法解析的外部符号的几个原因:1、lib 文件未引入。在Visual Studio中"项目->属性->连接器->常规->附加库目录"写上.lib库所在文件夹;其次,"项目->属性->连接器->输入->附加依赖项"中写上.lib库的名称。使用#pragma comment(lib, “XXX.lib”)语句添加 lib引用。2、类方法的实现未加类标...

1、error LNK2019: 无法解析的外部符号"struct ***"
在处理C++编程时,报错如"error LNK2019: 无法解析的外部符号",对于初学者来说,确实是一大挑战。本篇将聚焦一种导致此类错误的常见原因。问题的根源通常在于函数声明与函数实现之间存在不一致性。在使用VS2015编译器的情况下,若遇到错误提示"error LNK2019",通常意味着程序中引用的函数名与实际定义的...

虚幻引擎C++编译“无法解析的外部符号”解决方案
解决步骤如下:第一步:打开项目名的建置文件,即`ProjectName.Build.cs`。第二步:在文件中查找相关代码段落,通常这一段代码用于配置引擎的构建规则和模块。第三步:根据错误提示,确认需要添加的模块。以本例中的“GameplayTasks”为例,直接在相应的配置代码中添加该模块的引用。第四步:完成模块添加...

error LNK2019: 无法解析的外部符号
无法解析的外部符号“symbol”是指该符号在函数“function”中被引用,在function中找到了未定义的外部符号 (symbol)。若要解决此错误,请提供符号定义或移除引用它的代码。以下是几种可能性,请根据自己的情况判断。1. 在 Visual C++ .NET 2003 中,如果使用了 \/clr 而未将 CRT 链接到可执行文件,将...

error LNK2019: 无法解析的外部符号
1>main.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall seqlist<char>::~seqlist<char>(void)" (??1?$seqlist@D@@QAE@XZ),该符号在函数 _main 中被引用1>main.obj : error LNK2019: 无法解析的外部符号 "public: char __thiscall seqlist<char>::get(int)const " (?get@?$...

C++中重载<<时出现 error LNK2019: 无法解析的外部符号
因为operator <<这个函数的参数T不应该依赖于class的模板参数,友元本来是可以访问类的所有数据成员的,你这样依赖的话,放到外部表名该参数T是属于类内部本身,解决方案,为了更好的支持 友元,我们一般单独给友元一个模板参数你可以这样写:在类头文件写为:template <class U> std::ostream &operator ...

LNK2019: 无法解析的外部符号
LNK2019: 无法解析的外部符号解决方法:遇到这种问题一般都是由于缺少相应的库文件。右击项目,选择“属性”--“链接器”--“输入”--“附加依赖项”根据错误中的提示在下图右边的红色框内添加相应的lib文件。再次编译运行即可避免此类错误产生。

c++无法解析的外部命令
函数就是 void main() 写错了,是void main()不是void mian(),如果不是主函数就是没有添加相应的头文件。1>MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用。这句话的意思是void mian()函数在某个类中,没有添加累的头...

VC++ 错误 error LNK2019: 无法解析的外部符号 这样的错误 应该怎么解 ...
如果是自己写的动态库,那看下编写的时候有没有指定调用标准。建议使用动态库时候都用def文件编辑一下名称,这样就能避免名字编译改编问题了。另外给你推荐个查看动态库中函数名称的办法,使用VC集成环境中的depends工具,看一下动态库中的名字是不是被改编了,如果被改编了你需要按照要求的去调用 ...

相似回答