Название: Ошибка при указании макроса Q_OBJECT Отправлено: Alex_cs_gsp от Сентябрь 15, 2010, 17:19 Изучаю события, вот играясь наткнулся на ошибку, которая происходит если раскомменитровать //Q_OBJECT ???
Код: #include <QApplication> //Compile output mingw32-make: Leaving directory `D:/QT/MyModel/MyModel' debug/main.o: In function `CSpyLineEdit': D:\QT\MyModel\MyModel/../main.cpp:11: undefined reference to `vtable for CSpyLineEdit' D:\QT\MyModel\MyModel/../main.cpp:11: undefined reference to `vtable for CSpyLineEdit' D:\QT\MyModel\MyModel/../main.cpp:11: undefined reference to `vtable for CSpyLineEdit' collect2: ld returned 1 exit status mingw32-make[1]: *** [debug\MyModel.exe] Error 1 mingw32-make: *** [debug] Error 2 Exited with code 2. Error while building project MyModel When executing build step 'Make' Build issues: D:\QT\MyModel\MyModel/../main.cpp:11: undefined reference to `vtable for CSpyLineEdit' :-1: error: collect2: ld returned 1 exit status Название: Re: Ошибка при указании макроса Q_OBJECT Отправлено: BRE от Сентябрь 15, 2010, 17:28 В конец своего файла добавь:
#include "main.moc" Выполни: qmake make За подробностями в поиск и документацию. :) Название: Re: Ошибка при указании макроса Q_OBJECT Отправлено: Alex_cs_gsp от Сентябрь 15, 2010, 20:35 Помогло. А чё раньше я такой проблемы не замечал? Можно ответ по-подробнее пожалуйста, или ссылку. И без макроса Q_OBJECT все работает как нужно. Просто в Шлеевской книге говорится, что напрямую подключать #include "main.moc" не годится (стр.69). Спасибо.
Название: Re: Ошибка при указании макроса Q_OBJECT Отправлено: lit-uriy от Сентябрь 15, 2010, 21:09 qmake просматривает h-файлы, чтобы дать задания для moc'а. А в cpp-файлах он не ищет объявления класса.
Т.е. если ты класс объявляешь в cpp-файле, то должен руками инклюд написать. Если же объявление и реализация разнесены по h/cpp файлам. То qmake сам справится. Название: Re: Ошибка при указании макроса Q_OBJECT Отправлено: Alex_cs_gsp от Сентябрь 15, 2010, 21:17 Спасибо ;)
|