Russian Qt Forum
Ноябрь 27, 2024, 10:26
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Сигналы и слоты в глобальных объектах
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Сигналы и слоты в глобальных объектах (Прочитано 4762 раз)
Luck
Гость
Сигналы и слоты в глобальных объектах
«
:
Август 30, 2010, 14:58 »
Здравствуйте.
Сегодня столкнулся с совершенно для себя не понятной проблемой...
Существует класс А, унаследованный от QObject, описанный в файле a.cpp. Класс содержит макрос Q_OBJECT. Больше в классе нету вообще ничего (я постепенно все, что в нем было убирал в целях выяснения причины ошибки и оказалось, что ошибка возникает именно при использовании макроса). Файл a.cpp входит в состав статической библиотеки lib.a. В файле a.cpp объявлена глобальная переменная A a;
class A: public QObject
{
Q_OBJECT
};
A a;
Сама библиотека компилируется нормально. Однако при попытке компиляции приложения, использующего библиотеку появляется следующее:
error: In function `A::~A()':
error: undefined reference to `vtable for А'
error: In function `А::А()':
error: undefined reference to `vtable for А'
error: collect2: ld returned 1 exit status
Ошибка исчезает, если убрать макрос Q_OBJECT из класса или если убрать объявление переменной a.
Может, кто-то знает, в чем может быть дело? Помогите, пожалуйста.
«
Последнее редактирование: Август 30, 2010, 15:02 от Luck
»
Записан
alexman
Гость
Re: Сигналы и слоты в глобальных объектах
«
Ответ #1 :
Август 30, 2010, 15:02 »
Описание класса делай в h файле, если нужны сигналы/слоты!
Что-то не видно наследования???
Цитировать
class A
{
Q_OBJECT
};
Что-то не видно наследования???
Записан
Luck
Гость
Re: Сигналы и слоты в глобальных объектах
«
Ответ #2 :
Август 30, 2010, 15:03 »
Прошу прощения - при редактировании кода для выкладывания сюда случайно убрал наследование. Описание в .h файле не помогло - ошибка та же.
Записан
BRE
Гость
Re: Сигналы и слоты в глобальных объектах
«
Ответ #3 :
Август 30, 2010, 15:07 »
Цитата: Luck от Август 30, 2010, 15:03
Прошу прощения - при редактировании кода для выкладывания сюда случайно убрал наследование. Описание в .h файле не помогло - ошибка та же.
Выполни qmake после добавления Q_OBJECT
Записан
Luck
Гость
Re: Сигналы и слоты в глобальных объектах
«
Ответ #4 :
Август 30, 2010, 15:12 »
Цитата: BRE от Август 30, 2010, 15:07
Цитата: Luck от Август 30, 2010, 15:03
Прошу прощения - при редактировании кода для выкладывания сюда случайно убрал наследование. Описание в .h файле не помогло - ошибка та же.
Выполни qmake после добавления Q_OBJECT
Помогло, спасибо. Если не сложно, объясните, пожалуйста, в чем было дело.
Записан
BRE
Гость
Re: Сигналы и слоты в глобальных объектах
«
Ответ #5 :
Август 30, 2010, 15:13 »
Цитата: Luck от Август 30, 2010, 15:12
Помогло, спасибо. Если не сложно, объясните, пожалуйста, в чем было дело.
В не чтении документации.
Записан
Luck
Гость
Re: Сигналы и слоты в глобальных объектах
«
Ответ #6 :
Август 30, 2010, 15:15 »
Цитата: BRE от Август 30, 2010, 15:13
Цитата: Luck от Август 30, 2010, 15:12
Помогло, спасибо. Если не сложно, объясните, пожалуйста, в чем было дело.
В не чтении документации.
О чем конкретно стоит почитать и где?
Записан
BRE
Гость
Re: Сигналы и слоты в глобальных объектах
«
Ответ #7 :
Август 30, 2010, 15:15 »
Цитата: Luck от Август 30, 2010, 15:15
О чем конкретно стоит почитать и где?
Почитай в assistant про qmake и moc.
Записан
Luck
Гость
Re: Сигналы и слоты в глобальных объектах
«
Ответ #8 :
Август 30, 2010, 15:16 »
благодарю) почитаю
Записан
Denjs
Гость
Re: Сигналы и слоты в глобальных объектах
«
Ответ #9 :
Август 30, 2010, 17:10 »
Делать QMake вообще помогает при непонятных ошибках, особенно если на *_moc.cpp" файлы ругается.
После добавления классов, изменения структуры классов и т.п.
Собственно QMake (как я понимаю суть QT) запускает метакомпилятор, который делает много чего полезного связанного с переводом C++/QT на C++ того компилятора котрый вы используете...
Записан
break
Гипер активный житель
Offline
Сообщений: 846
Re: Сигналы и слоты в глобальных объектах
«
Ответ #10 :
Сентябрь 01, 2010, 01:25 »
Цитировать
Делать QMake вообще помогает при непонятных ошибках
К сожалению не всегда...
Цитировать
Собственно QMake (как я понимаю суть QT) запускает метакомпилятор, который делает много чего полезного связанного с переводом C++/QT на C++ того компилятора котрый вы используете...
Лично для меня это что-то новенькое - а именно связь qmake с конкретным компилятором. И никакая это не суть Qt - а просто система сборки, cmake его отлично заменяет.
По поводу нерешенных проблем qmake уже обсуждалось здесь:
http://www.prog.org.ru/index.php?topic=14425.msg94286#msg94286
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...