【发布时间】:2012-01-05 01:16:08
【问题描述】:
我试着写一个像这样的简单 Qt 应用程序:
main.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: virtual struct 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++ 中将声明和定义放在一个文件中并不被认为是好的编程风格,但这不是重点。我认为这应该是可能的,因为这里没有语法错误。
【问题讨论】:
-
将 'compile' 更改为 'link' 因为这不是编译器问题。
标签: c++ qt qt4 qt-creator moc