我有以下问题:
我想在main函数中从类创建Object。看起来这是一个链接器问题。你有任何想法,这个错误信息的原因是什么?
其错误消息为:
main.obj:-1:错误:LNK2019:Verweis aufnichtaufgelöstesexternes符号“”public:__ thiscall Test :: Test(class QString)“(?? 0Test @@ QAE @ VQString @@@ Z)”in Funktion“_main”。
main.obj:-1:错误:LNK2019:Verweis aufnichtaufgelöstesexternes符号“”公共:__thiscall测试::〜测试(无效)“(?? 1Test @@ QAE @ XZ)”在Funktion“_main”
debug \ Wth.exe:-1:错误:LNK1120:2nichtaufgelösteExterne
我有非常简单的课堂测试:
#ifndef TEST_H
#define TEST_H
#include <QtCore/QObject>
class Test
{
public:
Test(QString name);
~Test();
private:
QString m_name;
};
#endif // TEST_H
然后.cpp文件如下所示:
#include "test.h"
Test::Test(QString st) : m_name(st){}
Test::~Test(){}
非常基础,在我的主要功能中:
#include <QCoreApplication>
#include "test.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Test t("lam");
return a.exec();
}
答案 0 :(得分:2)
你正在寻找一个关于创建QObject类的例子。
让我们扩展您的代码:
#ifndef TEST_H
#define TEST_H
#include <QtCore/QObject>
class Test : public QObject
{
// Allways add the Q_OBJECT macro
Q_OBJECT
public:
// Use a null default parent
explicit Test(const QString& name, QObject* parent = 0);
~Test();
private:
QString m_name;
};
#endif // TEST_H
在你的cpp文件中:
#include "test.h"
Test::Test(const QString& st, QObject* parent) : QObject(parent), m_name(st {}
Test::~Test(){}
在你的main.cpp中没有
#include <QCoreApplication>
#include "test.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Test t("lam");
return a.exec();
}
这应该有效。如果您有链接问题,请执行以下步骤:
答案 1 :(得分:1)
所以事实证明我必须首先运行qmake。我在做什么,我正在建设而不是跑步。
谢谢大家,花了很多时间。我是Qt的新手。答案 2 :(得分:0)
现在,您在test.h
中加入main.cpp
,但test.h
无法参考test.cpp
实施。因此,您必须在test.cpp
的底部包含test.h
或将其包含在编译器调用中。