Ho cercato di scrivere una semplice applicazione Qt come questo:Perché questa semplice applicazione Qt non collegare
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();
}
Ma quando ho provato a compilare e collegarlo con Qt Creator 2.3.1 (Qt 4.7.4) ottengo 3 errori "simbolo esterno non risolto":
-
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.
modificato 'compile' in 'collegamento' in quanto questo non è un problema del compilatore. – stijn