我尝试编写一个简单的 Qt 应用程序,如下所示:
主.cpp:
#include <QApplication>
class MyApp : public QApplication {
Q_OBJECT
public:
MyApp(int argc, char* argv[]);
};
MyApp::MyApp(int argc, char* argv[]) :
QApplication(argc,argv) {
}
int main(int argc, char* argv[]) {
MyApp app(argc,argv);
return app.exec();
}
但是当我尝试编译并将其与 Qt Creator 2.3.1 (Qt 4.7.4) 链接时,我收到 3 个“未解析的外部符号”错误:
main.obj:-1:错误:LNK2001:未解析的外部符号
“”public:虚拟结构 QMetaObject const * __thiscall MyApp::metaObject(void)const“
(?metaObject@MyApp@@UBEPBUQMetaObject@@XZ)”。main.obj:-1:错误:LNK2001:未解析的外部符号
“”public:virtual void * __thiscall MyApp::qt_metacast(char const*)“
(?qt_metacast@MyApp@@UAEPAXPBD@Z)”。-
main.obj:-1: 错误: LNK2001: 无法解析的外部符号
“”public: virtual int __thiscall MyApp::qt_metacall(enum QMetaObject::Call,int,void * *)"
(?qt_metacall@MyApp@@UAEHW4Call@QMetaObject@ @HPAPAX@Z)"。
我认为它们在某种程度上与 Qt 的 MetaObjectCompiler 相关,但我无法找到解决方案。我知道在 c++ 中将声明和定义放在一个文件中并不被认为是好的编程风格,但这不是重点。在我看来,这应该是可能的,因为这里没有语法错误。