我是编程初学者,熟悉Java,但我目前在使用C ++方面遇到了一些麻烦。我收到以下错误:未解析的外部符号,当我尝试在另一个类的函数中执行此操作时:
player1 = new Character(50, 300, linep1);
错误:
mainwindow.obj:-1:错误:LNK2019:未解析的外部符号" public:__ cdecl Character :: Character(int,int,class QLine *)"函数" public:void __cdecl MainWindow :: setUpPlayers(void)"(?? 0Character @@ QEAA @HHPEAVQLine @@@ Z) (?setUpPlayers @ @@主窗口QEAAXXZ)
My Character头文件如下所示:
#include <QLine>
class Character
{
public:
Character(int xCoor, int yCoor, QLine *line);
QLine getView();
int getX();
int getY();
int getScore();
private:
QLine *view;
const int x;
int y;
int score;
};
我的cpp文件的上半部分如下所示:
#include "character.h"
Character::Character(int xCoor, int yCoor, QLine *line)
{
score = 0;
x = xCoor;
y = yCoor;
view = line;
}
正如您所看到的,我目前正在与Qt合作。 任何人都可以帮我解决这个问题吗?非常感激!
答案 0 :(得分:0)
未解析的外部符号指的是项目之外的内容,因此引用了类似外部库的内容。首先,仔细检查以确保所有项目都能找到相关文件(QLine)。通常这是该错误的原因。然后我就这样声明对象
character player1(50, 300, line1);
答案 1 :(得分:0)
在c / c ++中创建可执行程序是一个两阶段的过程。第一阶段涉及将每个源文件(cpp)编译为目标代码。第二阶段涉及将所有目标文件与任何其他库一起链接到最终的可执行文件中。
每当您看到“未解决的符号”错误时,表示您已成功完成编译阶段并且所有源文件都已正确编译。出现错误是因为链接器已遍历所有源文件,以及您提到的任何额外库,并且它找不到您在其他文件中使用的某些代码或变量。
现在,错误表明找不到类Character
的构造函数的代码。由于这是你自己编写的一个类,我建议你的项目文件不完整。
检查character.cpp文件是否包含在SOURCES列表中,然后再次运行qmake。
答案 2 :(得分:0)
你很可能在你的qmake项目文件中缺少这个:
SOURCES += character.cpp
如果您使用的是QtCreator,请确保重新运行qmake。否则只需从命令行重新运行它。