use*_*022 2 c++ qt moc qobject qtcore
我是 Qt 的新手。我正在尝试编译如下所示的小代码片段:
#include<QtCore/QtCore>
#include<QtCore/QObject>
class Test:public QObject
{
Q_OBJECT
public:
Test(){qDebug()<<"CTOR";}
};
int main()
{
Test t;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下命令通过命令行运行它:
g++ -o signalTest.exe -l QtCore signalTest.cpp
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
undefined reference to vtable for Test
Run Code Online (Sandbox Code Playgroud)
我想我需要包含 的库QObject,但我不确定。有任何想法吗?
您没有使用元对象编译器,也就是。moc,正确的。
您在源代码中有一个 QObject 而不是标题,因此HEADERS您需要在源代码中包含生成的 moc 文件,而不是将标题包含到qmake的变量中,如下所示。
请注意,您应该将 Q_OBJECT 宏添加到 Q_OBJECT 中,因为它提供了可用的属性、信号和槽。这不是解决此问题所必需的,但如果您知道这一点会更好。
#include<QtCore/QtCore>
#include<QtCore/QObject>
class Test:public QObject
{
Q_OBJECT
public:
Test(){qDebug()<<"CTOR";}
};
#include "main.moc" // <----- This will make it work
int main()
{
Test t;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
TEMPLATE = app
TARGET = main
QT = core
SOURCES += main.cpp
Run Code Online (Sandbox Code Playgroud)
qmake && make
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1610 次 |
| 最近记录: |