Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Сборка QT DLL |
Автор: Artemon 24.9.2009, 19:36 |
Собрал dll из исходников, в данной dll используются классы наследованные от QObject все норм собралось. Все классы в данной DLL сделал экспортируемыми. Начал собирать вторую dll, в которой используется первая и тут мне linker постоянно выдает ошибку о том, что нет реализации метода MyClass::staticMetaObject. Я взял и включил в проект moc файлы, сгенерированный от первой dll и все слинковалось. Вопрос: почему moc файлы не слинковались в первую dll ? Это обычная практика, или нужно что-то дополнительно указать, чтобы moc файлы линковались вместе с остальными классами ? P.S VS2005 + Qt 4.3 Коммерческая + интегратор для VS2005 Добавлено через 14 минут и 56 секунд Похоже я ошибся, moc линкуется вместе с классом, но тогда вопрос почему компилятор ругается, что не хватает реализации метода (который как раз в moc) ? |
Автор: Artemon 24.9.2009, 20:49 | ||||
Вношу поправку, линкер не видит реализацию КЛАССА class QMetaObject staticMetaObject. Посмотрел что за класс, оказывается это системный класс Qt. Вот так выглядит сообщение об ошибке.
Почему данное сообщение пропадает, когда я добавляю к проекту Moc файл, ведь в этом файле нет реализации данного класса. В нем содержится только инициализация структуры, следующего вида:
|
Автор: andrew_121 25.9.2009, 21:48 |
исходник скорми moc-у |
Автор: Artemon 26.9.2009, 09:11 |
Дело в том, что они и так скармливаются и генерируется куча файлов типа myclass_moc.cpp. В этих moc файлах караз таки и есть staticMetaObject. |