为了账号安全,请及时绑定邮箱和手机立即绑定

error LNK2019: 无法解析的外部符号

#include "stdafx.h"

#include <iostream>

#include <stdlib.h>

#include "Coordinate.h"

using namespace std;

/*****************************************/

/*对象数组

*要求:

*     定义Coordinate类

*     数据成员分别是m_iX,m_iY;

*     分别通过栈和堆实例化长度为3的对象数组

*     给数组中元素赋值

*     遍历两个数组

******************************************/



int main(void)

{

Coordinate coor[3];

coor[0].m_iX = 3;

coor[0].m_iY = 5;

Coordinate *p = new Coordinate[3];

p->m_iX = 7;

p[0].m_iY = 9;

p++;//p+=1;p=p+1;

p->m_iX = 11;

p[0].m_iY = 13;


p[1].m_iX=15;

p++;

p->m_iY = 17;

for (int i = 0; i < 3;i++)

{

cout <<"coor_X-"<<coor[i].m_iX << endl;

cout<<"coor_Y="<< coor[i].m_iY << endl;

}

for (int j = 0; j < 3;j++)

{

cout <<"p_X="<< p->m_iX << endl;

cout <<"p_Y="<<p->m_iY << endl;

p--;

}

p++;

delete[]p;

system("pause");

    return 0;

}

运行提示:

error LNK2019: 无法解析的外部符号 "public: __thiscall Coordinate::Coordinate(void)" (??0Coordinate@@QAE@XZ),该符号在函数 _main 中被引用

1>demo3-duixiangshuzu.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Coordinate::~Coordinate(void)" (??1Coordinate@@QAE@XZ),该符号在函数 "public: void * __thiscall Coordinate::`vector deleting destructor'(unsigned int)" (??_ECoordinate@@QAEPAXI@Z) 中被引用

1>E:\C++练习\demo3-duixiangshuzu\Debug\demo3-duixiangshuzu.exe : fatal error LNK1120: 2 个无法解析的外部命令

1>

1>生成失败。


正在回答

1 回答

解决方案:头文件和源文件都在同一个项目中(即Coordinate.h和Coordinate.cpp一起放在项目中),头文件中定义方法,在源文件中实现,并且方法前加上Coordinate::,关键是Coordinate.cpp中加上include “stdafx.h”

”stdafx.h“的原理:

编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。

因此,所有的MFC实现文件第一条语句都是:#include "stdafx.h"。在它前面的所有代码将被忽略,所以其他的头文件应该在这一行后面被包含。否则,你将会得到“No such file or directory”这样让你百思不得其解的错误提示。

当我们使用AppWizard来自动生成某些项目的时候,系统会自动把所需要include的头文件在stdafx.h中先include一下,这样,我们只需要直接include这个stdafx.h文件即可.因为同一个项目中的不同源文件CPP都包含相同的include文件,这样,为每个.CPP文件都重复include这些文件就显得很傻了。当然如果你不用MFC的话就不用了。即:在每个.cpp文件中都include stdafx.h 就相当于包含了其他的如iostream.h等文件


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(下)
  • 参与学习       70919    人
  • 解答问题       514    个

封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通

进入课程

error LNK2019: 无法解析的外部符号

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信