我试着写一个简单的Qt应用程序是这样的:为什么这个简单的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将其链接造物主2.3.1(QT 4.7.4)我得到3 “解析外部符号” 错误:
-
main.obj:-1: error: LNK2001: unresolved external symbol
""public: virtual struct QMetaObject const * __thiscall MyApp::metaObject(void)const "
([email protected]@@[email protected]@XZ)". -
main.obj:-1: error: LNK2001: unresolved external symbol
""public: virtual void * __thiscall MyApp::qt_metacast(char const*)"
([email protected]@@[email protected])". -
main.obj:-1: error: LNK2001: unresolved external symbol
""public: virtual int __thiscall MyApp::qt_metacall(enum QMetaObject::Call,int,void * *)"
([email protected]@@[email protected]@@[email protected])".
I think they are somehow related to the MetaObjectCompiler of Qt, but I can't figure out a solution. I know it's not considered good programming style in c++ to put declarations and definitions in one file, but that's not the point here. In my opinion it should be possible since there is nothing syntactically wrong here.
将'compile'更改为'link',因为这不是编译器问题。 – stijn