C++ 链接器没有';我不喜欢我的函数定义(LNK2019未解析的外部符号)

C++ 链接器没有';我不喜欢我的函数定义(LNK2019未解析的外部符号),c++,visual-c++,C++,Visual C++,我对这一切都很陌生,所以如果我格式不正确或问了一个愚蠢的问题,请原谅我。目前在学校里参加C++课程,我的教授对此毫无帮助。编写一个程序,使用分配指定的三个函数(getData、getAvg和GetLowstandHighestSalary)处理输入文件,其中包含各种职务和薪资范围(从低到高)。在构建程序的过程中,我试图捕捉出现的拼写错误/哑错误,我注意到,当我尝试引用getData和GetLowerStandHighestSalary函数时,它会回退错误: 错误LNK2019:未解析的外部符号“

我对这一切都很陌生,所以如果我格式不正确或问了一个愚蠢的问题,请原谅我。目前在学校里参加C++课程,我的教授对此毫无帮助。编写一个程序,使用分配指定的三个函数(getData、getAvg和GetLowstandHighestSalary)处理输入文件,其中包含各种职务和薪资范围(从低到高)。在构建程序的过程中,我试图捕捉出现的拼写错误/哑错误,我注意到,当我尝试引用getData和GetLowerStandHighestSalary函数时,它会回退错误:

错误LNK2019:未解析的外部符号“void\uu cdecl getData(类 std::基本流和类 基本字符串,双精度,整数和“ (?getData@@YAXAAV?$basic)_ifstream@DU?$char_traits@D@std@@@std@@V?$basic_string@DU?$char_traits@D@性病病毒$allocator@D@2@@2@NAAH@Z) 在函数_main中引用

然后是LNK2020错误。我的理解是,这些类型的错误通常会启动级联,所以解决第一个错误通常会解决其余的错误,所以我将重点放在LNK2019上。据我所知,它无法识别我的函数定义

我尝试过使用设置,将链接器子系统从控制台更改为windows并返回,将配置类型从应用程序(.exe)更改为动态库(.dll)并返回,以及将函数定义和声明转换为头文件,但仍然没有成功

有人知道如何让程序识别我的功能吗

代码:

#包括
#包括
#包括
#包括
使用名称空间std;
void getData(ifstream&,string,double,int&);
双倍平均(双倍&,双倍&);
void getlowstandinghestavgsalary(双精度,整数,整数和整数);
内部主(空){
河流充填;
字符串作业[20];
双薪范围[20][2],平均工资[20];
int numJobs=0,最低指数=0,最高指数=0;
字符输入;
getData(Infle,jobs[20],salaryRange[20][2],numJobs);
对于(int i=0;i<19;i++){
avgSalary[i]=getAverage(salaryRange[i][0],salaryRange[i][1]);
}
GetLowerStandHighestavgsalary(avgSalary[20],最低指数,最高指数);
cout>输入;
如果(输入='a'){
对于(int i=0;i<19;i++){

cout函数声明和定义是不同的

声明:

void getData(ifstream&, string, double, int&);
定义:

void getData(ifstream& inFile, string jobs[], double salaryRange[][2], int& numJobs)
我希望解决其中任何一个问题都能解决您的问题。通常,您只需复制定义并用分号将其粘贴为声明。如下所示:

void getData(ifstream& inFile, string jobs[], double salaryRange[][2], int& numJobs);

如果您试图使用数组调用函数,那么代码中会出现很多错误

getData(inFile, jobs[20], salaryRange[20][2], numJobs);
应该是哪一个

getData(inFile, jobs, salaryRange, numJobs);
这是一个非常常见的新手误解,
jobs[20]
意味着整个
jobs
数组,但它不是。它实际上意味着它所说的,
jobs[20]
意味着位置20处
jobs
数组的元素

您多次犯相同的错误

一旦修复了这些错误,就可以修复原型

void getData(ifstream&, string, double, int&);
应该是

getData(inFile, jobs, salaryRange, numJobs);
void getData(ifstream&, string[], double[][2], int&);

您声明的函数与您定义的函数不同。
void getData(ifstream&,string,double,int&);
string
作为第二个参数。
void getData(ifstream&infle,string jobs[],double salaryregrange[][2],int&numJobs)
有指向字符串的指针作为第二个参数和不同的第三个和第四个参数!就是这样!非常感谢!