Я пытался написать простое приложение на 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 "
(? Метаобъект @ 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)».
Я думаю, что они как-то связаны с MetaObjectCompiler из Qt, но я не могу найти решение.
Я знаю, что не считается хорошим стилем программирования в C ++ помещать объявления и определения в один файл, но здесь дело не в этом. По моему мнению, это должно быть возможно, так как здесь нет ничего синтаксически неправильного.